• Kinglong Mee's avatar
    NFSD: Error out when register_shrinker() fail · a68465c9
    Kinglong Mee authored
    If register_shrinker() failed, nfsd will cause a NULL pointer access as,
    
    [ 9250.875465] nfsd: last server has exited, flushing export cache
    [ 9251.427270] BUG: unable to handle kernel NULL pointer dereference at           (null)
    [ 9251.427393] IP: [<ffffffff8136fc29>] __list_del_entry+0x29/0xd0
    [ 9251.427579] PGD 13e4d067 PUD 13e4c067 PMD 0
    [ 9251.427633] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
    [ 9251.427706] Modules linked in: ip6t_rpfilter ip6t_REJECT bnep bluetooth xt_conntrack cfg80211 rfkill 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 btrfs xfs microcode ppdev serio_raw pcspkr xor libcrc32c raid6_pq e1000 parport_pc parport i2c_piix4 i2c_core nfsd(OE-) auth_rpcgss nfs_acl lockd sunrpc(E) ata_generic pata_acpi
    [ 9251.428240] CPU: 0 PID: 1557 Comm: rmmod Tainted: G           OE 3.16.0-rc2+ #22
    [ 9251.428366] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/31/2013
    [ 9251.428496] task: ffff880000849540 ti: ffff8800136f4000 task.ti: ffff8800136f4000
    [ 9251.428593] RIP: 0010:[<ffffffff8136fc29>]  [<ffffffff8136fc29>] __list_del_entry+0x29/0xd0
    [ 9251.428696] RSP: 0018:ffff8800136f7ea0  EFLAGS: 00010207
    [ 9251.428751] RAX: 0000000000000000 RBX: ffffffffa0116d48 RCX: dead000000200200
    [ 9251.428814] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffffa0116d48
    [ 9251.428876] RBP: ffff8800136f7ea0 R08: ffff8800136f4000 R09: 0000000000000001
    [ 9251.428939] R10: 8080808080808080 R11: 0000000000000000 R12: ffffffffa011a5a0
    [ 9251.429002] R13: 0000000000000800 R14: 0000000000000000 R15: 00000000018ac090
    [ 9251.429064] FS:  00007fb9acef0740(0000) GS:ffff88003fa00000(0000) knlGS:0000000000000000
    [ 9251.429164] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 9251.429221] CR2: 0000000000000000 CR3: 0000000031a17000 CR4: 00000000001407f0
    [ 9251.429306] Stack:
    [ 9251.429410]  ffff8800136f7eb8 ffffffff8136fcdd ffffffffa0116d20 ffff8800136f7ed0
    [ 9251.429511]  ffffffff8118a0f2 0000000000000000 ffff8800136f7ee0 ffffffffa00eb765
    [ 9251.429610]  ffff8800136f7ef0 ffffffffa010e93c ffff8800136f7f78 ffffffff81104ac2
    [ 9251.429709] Call Trace:
    [ 9251.429755]  [<ffffffff8136fcdd>] list_del+0xd/0x30
    [ 9251.429896]  [<ffffffff8118a0f2>] unregister_shrinker+0x22/0x40
    [ 9251.430037]  [<ffffffffa00eb765>] nfsd_reply_cache_shutdown+0x15/0x90 [nfsd]
    [ 9251.430106]  [<ffffffffa010e93c>] exit_nfsd+0x9/0x6cd [nfsd]
    [ 9251.430192]  [<ffffffff81104ac2>] SyS_delete_module+0x162/0x200
    [ 9251.430280]  [<ffffffff81013b69>] ? do_notify_resume+0x59/0x90
    [ 9251.430395]  [<ffffffff816f2369>] system_call_fastpath+0x16/0x1b
    [ 9251.430457] Code: 00 00 55 48 8b 17 48 b9 00 01 10 00 00 00 ad de 48 8b 47 08 48 89 e5 48 39 ca 74 29 48 b9 00 02 20 00 00 00 ad de 48 39 c8 74 7a <4c> 8b 00 4c 39 c7 75 53 4c 8b 42 08 4c 39 c7 75 2b 48 89 42 08
    [ 9251.430691] RIP  [<ffffffff8136fc29>] __list_del_entry+0x29/0xd0
    [ 9251.430755]  RSP <ffff8800136f7ea0>
    [ 9251.430805] CR2: 0000000000000000
    [ 9251.431033] ---[ end trace 080f3050d082b4ea ]---
    Signed-off-by: default avatarKinglong Mee <kinglongmee@gmail.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    a68465c9
nfscache.c 16 KB