All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anirban Sinha <ani@arista.com>
To: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: Ani Sinha <ani@arista.com>, Ani Sinha <ani@anirban.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jslaby@suse.com>,
	linux-kernel@vger.kernel.org, Rik van Riel <riel@redhat.com>,
	Ivan Delalande <colona@arista.com>,
	Francesco Ruggeri <fruggeri@arista.com>
Subject: Re: [PATCH 1/1] Fix 'sleeping function called from invalid context' warning in sysrq generated crash.
Date: Sun, 20 Dec 2015 06:59:20 -0800 (PST)	[thread overview]
Message-ID: <alpine.LFD.2.10.1512200655030.14639@us101.sjc.aristanetworks.com> (raw)
In-Reply-To: <20151218130125.GO4054@linux.vnet.ibm.com>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 5809 bytes --]



On Fri, 18 Dec 2015, Paul E. McKenney wrote:

> On Thu, Dec 17, 2015 at 05:15:10PM -0800, Ani Sinha wrote:
> > Commit 984d74a72076a1 ("sysrq: rcu-ify __handle_sysrq")
> > replaced spin_lock_irqsave() calls with
> > rcu_read_lock() calls in sysrq. Since rcu_read_lock() does not
> > disable preemption, faulthandler_disabled() in
> > __do_page_fault() in x86/fault.c returns false. When the code
> > later calls might_sleep() in the pagefault handler, we get the
> > following warning:
> > 
> > BUG: sleeping function called from invalid context at ../arch/x86/mm/fault.c:1187
> > in_atomic(): 0, irqs_disabled(): 0, pid: 4706, name: bash
> > Preemption disabled at:[<ffffffff81484339>] printk+0x48/0x4a
> > 
> > To fix this, we release the RCU read lock before we crash.
> > 
> > Tested this patch on linux 3.18 by booting off one of our boards.
> > 
> > Fixes: 984d74a72076a1 ("sysrq: rcu-ify __handle_sysrq")
> > 
> > Signed-off-by: Ani Sinha <ani@arista.com>
> 
> I queued this with Rik's Signed-off-by, and fixed some checkpatch.pl
> errors.  Please run scripts/checkpatch.pl on your patches in the future.
> 
> Please see below for the result.
> 
> Rik, did you test this as well?  If so, may I also have your Tested-by?
> 

I applied this patch on linux 4.4-rc5 and booted off a fedora core 22 
vmware VM with it (sorry I don't have a real box around). Seems to be 
working fine. Also booted off a fc14 vm box with it and it also seems 
fine. Here's the kernel crash dump from fc22 box :

Fedora release 22 (Twenty Two)
Kernel 4.4.0-rc5-2847908.AroraKernelbleeding.5.fc18.x86_64 on an x86_64 (ttyS1)

localhost login: [   50.070804] [drm:vmw_cmdbuf_work_func [vmwgfx]] *ERROR* Command buffer error.
[   81.823507] sysrq: SysRq : Trigger a crash
[   81.825099] BUG: unable to handle kernel NULL pointer dereference at           (null)
[   81.827357] IP: [<ffffffff8131c217>] sysrq_handle_crash+0x11/0x1b
[   81.828986] PGD 0 
[   81.829542] Oops: 0002 [#1] SMP 
[   81.830426] Modules linked in: rfcomm xt_CHECKSUM ipt_MASQUERADE nf_nat_masquerade_ipv4 tun nf_conntrack_netbios_ns nf_conntrack_broadcast xt_tcpudp ip6t_REJECT fuse ipt_REJECT xt_conntrack ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6table_mangle ip6table_security ip6table_raw ip6table_filter ip6_tables iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack iptable_mangle iptable_security iptable_raw iptable_filter snd_seq_midi snd_seq_midi_event bnep coretemp hwmon crc32c_intel ppdev aesni_intel aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd snd_ens1371 snd_ac97_codec ac97_bus snd_seq pcspkr snd_pcm serio_raw snd_timer snd_rawmidi snd_seq_device snd soundcore gameport i2c_piix4 shpchp battery parport_pc parport btusb btrtl btbcm btintel ac bluetooth acpi_cpufreq tpm_tis tpm nfsd auth_rpcgss oid_registry nfs_acl lockd grace sunrpc ip_tables x_tables uhci_hcd vmwgfx e1000 ehci_pci ehci_hcd mptspi scsi_transport_spi mptscsih mptbase drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm i2c_core sr_mod cdrom dm_mirror dm_region_hash dm_log dm_mod autofs4
[   81.854446] CPU: 0 PID: 2296 Comm: bash Not tainted 4.4.0-rc5-2847908.AroraKernelbleeding.5.fc18.x86_64 #1
[   81.856338] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 05/20/2014
[   81.858431] task: ffff88001c7d9a00 ti: ffff880004d70000 task.ti: ffff880004d70000
[   81.859903] RIP: 0010:[<ffffffff8131c217>]  [<ffffffff8131c217>] sysrq_handle_crash+0x11/0x1b
[   81.861609] RSP: 0018:ffff880004d73d98  EFLAGS: 00010296
[   81.862672] RAX: 000000000000000f RBX: ffffffff81a774a0 RCX: 0000000000000000
[   81.864078] RDX: ffff88003f60f101 RSI: ffff88003f60cae8 RDI: 0000000000000063
[   81.865482] RBP: ffff880004d73d98 R08: 000000000000000f R09: 0000000000000000
[   81.866889] R10: 0000000000000000 R11: 000000000000000f R12: 0000000000000004
[   81.868294] R13: 0000000000000063 R14: ffff880004d73f00 R15: 0000000000000000
[   81.869702] FS:  00007fd8e0c69700(0000) GS:ffff88003f600000(0000) knlGS:0000000000000000
[   81.871293] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   81.872437] CR2: 0000000000000000 CR3: 000000001199f000 CR4: 00000000001406f0
[   81.873877] Stack:
[   81.874297]  ffff880004d73dc8 ffffffff8131c835 0000000000000002 ffff880004cb5200
[   81.875876]  00007fd8e0c77000 ffff880004d73f20 ffff880004d73de8 ffffffff8131c8e7
[   81.877455]  fffffffffffffff2 ffff88003abff500 ffff880004d73e28 ffffffff81181949
[   81.879032] Call Trace:
[   81.879537]  [<ffffffff8131c835>] __handle_sysrq+0x8f/0x11c
[   81.880645]  [<ffffffff8131c8e7>] write_sysrq_trigger+0x25/0x36
[   81.881829]  [<ffffffff81181949>] proc_reg_write+0x54/0x76
[   81.883007]  [<ffffffff81131ce4>] __vfs_write+0x23/0xa2
[   81.884050]  [<ffffffff81200200>] ? security_file_permission+0x37/0x40
[   81.885344]  [<ffffffff81132338>] ? rw_verify_area+0x6b/0xcb
[   81.886469]  [<ffffffff81133ccf>] ? __sb_start_write+0x22/0x42
[   81.887628]  [<ffffffff81132abe>] vfs_write+0x86/0xdc
[   81.888634]  [<ffffffff81132ca7>] SyS_write+0x4d/0x7f
[   81.889643]  [<ffffffff8150406e>] entry_SYSCALL_64_fastpath+0x12/0x71
[   81.890919] Code: 7a 00 00 55 b8 01 00 00 00 48 89 e5 75 07 0f b6 05 73 53 7a 00 83 e0 01 5d c3 55 c7 05 e7 23 92 00 01 00 00 00 48 89 e5 0f ae f8 <c6> 04 25 00 00 00 00 01 5d c3 55 48 89 e5 53 48 89 f3 48 8d 55 
[   81.896661] RIP  [<ffffffff8131c217>] sysrq_handle_crash+0x11/0x1b
[   81.897915]  RSP <ffff880004d73d98>
[   81.898618] CR2: 0000000000000000
[   81.899346] ---[ end trace 7f48df1773107036 ]---
[   81.900306] Kernel panic - not syncing: Fatal exception
[   81.901378] Kernel Offset: disabled
[   81.902109] ---[ end Kernel panic - not syncing: Fatal exception
 

      parent reply	other threads:[~2015-12-20 14:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-18  1:15 [PATCH 1/1] Fix 'sleeping function called from invalid context' warning in sysrq generated crash Ani Sinha
2015-12-18 13:01 ` Paul E. McKenney
2015-12-18 15:33   ` Ani Sinha
2015-12-20 14:59   ` Anirban Sinha [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LFD.2.10.1512200655030.14639@us101.sjc.aristanetworks.com \
    --to=ani@arista.com \
    --cc=ani@anirban.org \
    --cc=colona@arista.com \
    --cc=fruggeri@arista.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jslaby@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=riel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.