ARM: fix scheduling while atomic warning in alignment handling code
Paolo Pisati reports that IPv6 triggers this warning:
BUG: scheduling while atomic: swapper/0/0/0x40000100
Modules linked in:
[<
c001b1c4>] (unwind_backtrace+0x0/0xf0) from [<
c0503c5c>] (__schedule_bug+0x48/0x5c)
[<
c0503c5c>] (__schedule_bug+0x48/0x5c) from [<
c0508608>] (__schedule+0x700/0x740)
[<
c0508608>] (__schedule+0x700/0x740) from [<
c007007c>] (__cond_resched+0x24/0x34)
[<
c007007c>] (__cond_resched+0x24/0x34) from [<
c05086dc>] (_cond_resched+0x3c/0x44)
[<
c05086dc>] (_cond_resched+0x3c/0x44) from [<
c0021f6c>] (do_alignment+0x178/0x78c)
[<
c0021f6c>] (do_alignment+0x178/0x78c) from [<
c00083e0>] (do_DataAbort+0x34/0x98)
[<
c00083e0>] (do_DataAbort+0x34/0x98) from [<
c0509a60>] (__dabt_svc+0x40/0x60)
Exception stack(0xc0763d70 to 0xc0763db8)
3d60:
e97e805e e97e806e 2c000000 11000000
3d80:
ea86bb00 0000002c 00000011 e97e807e c076d2a8 e97e805e e97e806e 0000002c
3da0:
3d000000 c0763dbc c04b98fc c02a8490 00000113 ffffffff
[<
c0509a60>] (__dabt_svc+0x40/0x60) from [<
c02a8490>] (__csum_ipv6_magic+0x8/0xc8)
Fix this by using probe_kernel_address() stead of __get_user().
Cc: <stable@vger.kernel.org>
Reported-by: Paolo Pisati <p.pisati@gmail.com>
Tested-by: Paolo Pisati <p.pisati@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>