Re: [patch 5/13] s390: show_task oops.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Martin Schwidefsky <[email protected]> wrote:
>
> From: Heiko Carstens <[email protected]>
> 
> [patch 5/13] s390: show_task oops.
> 
> The show_task function walks the kernel stack backchain of
> processes assuming that the processes are not running. Since
> this assumption is not correct walking the backchain can lead
> to an addressing exception and therefore to a kernel hang.
> So prevent the kernel hang (you still get incorrect results)
> verity that all read accesses are within the bounds of the
> kernel stack before performing them.
> 

This one needs to be thought about and tested versus the just-merged
s390-task_stack_page.patch.  I guess it'll still work, but some of the
pretty new accessors could be used in there, at least.

> --- linux-2.6/arch/s390/kernel/process.c	2006-01-12 15:43:19.000000000 +0100
> +++ linux-2.6-patched/arch/s390/kernel/process.c	2006-01-12 15:43:55.000000000 +0100
> @@ -58,10 +58,19 @@ asmlinkage void ret_from_fork(void) __as
>   */
>  unsigned long thread_saved_pc(struct task_struct *tsk)
>  {
> -	struct stack_frame *sf;
> +	struct stack_frame *sf, *low, *high;
>  
> -	sf = (struct stack_frame *) tsk->thread.ksp;
> -	sf = (struct stack_frame *) sf->back_chain;
> +	if (!tsk || !tsk->thread_info)
> +		return 0;
> +	low = (struct stack_frame *) tsk->thread_info;
> +	high = (struct stack_frame *)
> +		((unsigned long) tsk->thread_info + THREAD_SIZE) - 1;
> +	sf = (struct stack_frame *) (tsk->thread.ksp & PSW_ADDR_INSN);
> +	if (sf <= low || sf > high)
> +		return 0;
> +	sf = (struct stack_frame *) (sf->back_chain & PSW_ADDR_INSN);
> +	if (sf <= low || sf > high)
> +		return 0;
>  	return sf->gprs[8];
>  }
>  
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux