Jeff Layton
72a6e59449
lockd: ensure we tear down any live sockets when socket creation fails during lockd_up
commit 679b033df4 upstream.
We had a Fedora ABRT report with a stack trace like this:
kernel BUG at net/sunrpc/svc.c:550!
invalid opcode: 0000 [#1] SMP
[...]
CPU: 2 PID: 913 Comm: rpc.nfsd Not tainted 3.13.6-200.fc20.x86_64 #1
Hardware name: Hewlett-Packard HP ProBook 4740s/1846, BIOS 68IRR Ver. F.40 01/29/2013
task: ffff880146b00000 ti: ffff88003f9b8000 task.ti: ffff88003f9b8000
RIP: 0010:[<ffffffffa0305fa8>] [<ffffffffa0305fa8>] svc_destroy+0x128/0x130 [sunrpc]
RSP: 0018:ffff88003f9b9de0 EFLAGS: 00010206
RAX: ffff88003f829628 RBX: ffff88003f829600 RCX: 00000000000041ee
RDX: 0000000000000000 RSI: 0000000000000286 RDI: 0000000000000286
RBP: ffff88003f9b9de8 R08: 0000000000017360 R09: ffff88014fa97360
R10: ffffffff8114ce57 R11: ffffea00051c9c00 R12: ffff88003f829600
R13: 00000000ffffff9e R14: ffffffff81cc7cc0 R15: 0000000000000000
FS: 00007f4fde284840(0000) GS:ffff88014fa80000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f4fdf5192f8 CR3: 00000000a569a000 CR4: 00000000001407e0
Stack:
ffff88003f792300 ffff88003f9b9e18 ffffffffa02de02a 0000000000000000
ffffffff81cc7cc0 ffff88003f9cb000 0000000000000008 ffff88003f9b9e60
ffffffffa033bb35 ffffffff8131c86c ffff88003f9cb000 ffff8800a5715008
Call Trace:
[<ffffffffa02de02a>] lockd_up+0xaa/0x330 [lockd]
[<ffffffffa033bb35>] nfsd_svc+0x1b5/0x2f0 [nfsd]
[<ffffffff8131c86c>] ? simple_strtoull+0x2c/0x50
[<ffffffffa033c630>] ? write_pool_threads+0x280/0x280 [nfsd]
[<ffffffffa033c6bb>] write_threads+0x8b/0xf0 [nfsd]
[<ffffffff8114efa4>] ? __get_free_pages+0x14/0x50
[<ffffffff8114eff6>] ? get_zeroed_page+0x16/0x20
[<ffffffff811dec51>] ? simple_transaction_get+0xb1/0xd0
[<ffffffffa033c098>] nfsctl_transaction_write+0x48/0x80 [nfsd]
[<ffffffff811b8b34>] vfs_write+0xb4/0x1f0
[<ffffffff811c3f99>] ? putname+0x29/0x40
[<ffffffff811b9569>] SyS_write+0x49/0xa0
[<ffffffff810fc2a6>] ? __audit_syscall_exit+0x1f6/0x2a0
[<ffffffff816962e9>] system_call_fastpath+0x16/0x1b
Code: 31 c0 e8 82 db 37 e1 e9 2a ff ff ff 48 8b 07 8b 57 14 48 c7 c7 d5 c6 31 a0 48 8b 70 20 31 c0 e8 65 db 37 e1 e9 f4 fe ff ff 0f 0b <0f> 0b 66 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 56 41 55
RIP [<ffffffffa0305fa8>] svc_destroy+0x128/0x130 [sunrpc]
RSP <ffff88003f9b9de0>
Evidently, we created some lockd sockets and then failed to create
others. make_socks then returned an error and we tried to tear down the
svc, but svc->sv_permsocks was not empty so we ended up tripping over
the BUG() in svc_destroy().
Fix this by ensuring that we tear down any live sockets we created when
socket creation is going to return an error.
Fixes: 786185b5f8 (SUNRPC: move per-net operations from...)
Reported-by: Raphos <raphoszap@laposte.net>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-05-13 13:59:46 +02:00
..
2013-05-07 20:16:25 -07:00
2013-03-03 19:36:31 -08:00
2013-03-03 19:36:31 -08:00
2013-05-07 20:16:25 -07:00
2013-05-06 13:06:59 -07:00
2013-05-31 15:17:56 -04:00
2013-03-03 19:36:31 -08:00
2014-04-26 17:15:35 -07:00
2013-04-09 14:12:56 -04:00
2014-01-09 12:24:25 -08:00
2014-03-06 21:30:02 -08:00
2013-04-09 14:12:56 -04:00
2013-11-29 11:11:53 -08:00
2013-03-03 19:36:31 -08:00
2013-08-14 22:59:10 -07:00
2013-12-04 10:55:49 -08:00
2013-05-01 14:08:52 -07:00
2013-11-13 12:05:31 +09:00
2013-05-13 20:12:10 +01:00
2013-03-03 19:36:31 -08:00
2014-02-13 13:48:00 -08:00
2013-02-27 19:10:24 -08:00
2013-05-07 20:16:25 -07:00
2013-07-21 18:21:23 -07:00
2014-05-06 07:55:32 -07:00
2013-05-08 15:11:48 -07:00
2013-05-24 16:22:50 -07:00
2013-03-12 18:55:21 -07:00
2013-04-29 15:54:27 -07:00
2014-02-13 13:47:59 -08:00
2014-01-25 08:27:11 -08:00
2013-05-24 16:22:51 -07:00
2013-05-07 20:16:25 -07:00
2013-05-04 15:48:45 -04:00
2013-07-13 11:42:26 -07:00
2013-04-29 15:41:42 -04:00
2013-10-18 07:45:45 -07:00
2013-09-26 17:18:28 -07:00
2013-05-03 09:56:25 -07:00
2014-01-09 12:24:24 -08:00
2014-04-26 17:15:36 -07:00
2013-11-13 12:05:31 +09:00
2014-05-13 13:59:46 +02:00
2013-03-23 14:15:31 -07:00
2013-03-03 19:36:31 -08:00
2013-06-07 12:15:38 -04:00
2014-03-23 21:38:17 -07:00
2014-05-06 07:55:29 -07:00
2014-01-25 08:27:12 -08:00
2014-02-13 13:48:00 -08:00
2013-05-07 20:16:25 -07:00
2014-05-06 07:55:32 -07:00
2013-03-03 19:36:31 -08:00
2013-03-03 19:36:31 -08:00
2014-04-03 12:01:05 -07:00
2013-05-09 16:42:10 -07:00
2013-03-03 19:36:31 -08:00
2013-05-31 15:17:31 -04:00
2014-03-06 21:30:12 -08:00
2013-02-26 20:16:07 -08:00
2014-05-06 07:55:30 -07:00
2013-04-29 09:17:57 +10:00
2013-03-11 07:09:48 -07:00
2013-04-05 15:35:52 -07:00
2013-10-05 07:13:09 -07:00
2013-07-21 18:21:36 -07:00
2013-10-01 09:17:48 -07:00
2013-04-30 09:36:50 -07:00
2014-05-06 07:55:28 -07:00
2013-12-08 07:29:27 -08:00
2013-02-26 02:46:11 -05:00
2014-03-06 21:30:06 -08:00
2013-05-01 17:51:54 -07:00
2013-05-02 10:16:16 -07:00
2013-10-13 16:08:31 -07:00
2013-04-29 15:40:23 -04:00
2013-04-30 17:04:03 -07:00
2014-03-23 21:38:21 -07:00
2013-10-05 07:13:09 -07:00
2013-07-28 16:29:40 -07:00
2014-02-20 11:06:11 -08:00
2013-05-04 15:03:05 -04:00
2013-05-07 20:16:25 -07:00
2013-05-04 14:45:54 -04:00
2014-01-25 08:27:11 -08:00
2014-02-13 13:48:00 -08:00
2013-05-08 10:13:35 -07:00
2013-05-01 07:21:43 -07:00
2013-11-29 11:11:44 -08:00
2013-02-22 23:31:31 -05:00
2013-06-15 05:39:08 +04:00
2014-02-22 12:41:25 -08:00
2013-03-03 19:36:31 -08:00
2013-03-01 23:51:07 -05:00
2014-04-26 17:15:35 -07:00
2013-05-01 17:51:54 -07:00
2013-06-20 19:02:45 +04:00
2013-02-22 23:31:31 -05:00
2013-04-17 13:25:09 +01:00
2013-04-30 17:04:04 -07:00
2014-05-13 13:59:44 +02:00
2013-05-01 17:51:54 -07:00
2014-02-06 11:08:16 -08:00
2014-03-23 21:38:20 -07:00
2013-08-29 09:47:35 -07:00
2013-03-03 22:58:33 -05:00
2013-12-11 22:36:26 -08:00
2013-05-31 15:16:33 -04:00
2013-05-01 17:51:54 -07:00
2014-02-13 13:48:00 -08:00
2013-02-22 23:31:31 -05:00
2013-11-13 12:05:34 +09:00
2013-03-03 22:58:46 -05:00
2014-02-13 13:47:59 -08:00
2013-02-26 02:46:08 -05:00
2013-10-18 07:45:44 -07:00
2013-08-04 16:51:15 +08:00
2013-03-03 22:46:22 -05:00
2013-03-02 09:35:13 -05:00