Vlad Yasevich
072017b41e
net: sctp: Add rudimentary infrastructure to account for control chunks
This patch adds a base infrastructure that allows SCTP to do
memory accounting for control chunks. Real accounting code will
follow.
This patch alos fixes the following triggered bug ...
[ 553.109742] kernel BUG at include/linux/skbuff.h:1813!
[ 553.109766] invalid opcode: 0000 [#1] SMP
[ 553.109789] Modules linked in: sctp libcrc32c rfcomm [...]
[ 553.110259] uinput i915 i2c_algo_bit drm_kms_helper e1000e drm ptp
pps_core i2c_core wmi video sunrpc
[ 553.110320] CPU: 0 PID: 1636 Comm: lt-test_1_to_1_ Not tainted
3.11.0-rc3+ #2
[ 553.110350] Hardware name: LENOVO 74597D6/74597D6, BIOS 6DET60WW
(3.10 ) 09/17/2009
[ 553.110381] task: ffff88020a01dd40 ti: ffff880204ed0000 task.ti:
ffff880204ed0000
[ 553.110411] RIP: 0010:[<ffffffffa0698017>] [<ffffffffa0698017>]
skb_orphan.part.9+0x4/0x6 [sctp]
[ 553.110459] RSP: 0018:ffff880204ed1bb8 EFLAGS: 00010286
[ 553.110483] RAX: ffff8802086f5a40 RBX: ffff880204303300 RCX:
0000000000000000
[ 553.110487] RDX: ffff880204303c28 RSI: ffff8802086f5a40 RDI:
ffff880202158000
[ 553.110487] RBP: ffff880204ed1bb8 R08: 0000000000000000 R09:
0000000000000000
[ 553.110487] R10: ffff88022f2d9a04 R11: ffff880233001600 R12:
0000000000000000
[ 553.110487] R13: ffff880204303c00 R14: ffff8802293d0000 R15:
ffff880202158000
[ 553.110487] FS: 00007f31b31fe740(0000) GS:ffff88023bc00000(0000)
knlGS:0000000000000000
[ 553.110487] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 553.110487] CR2: 000000379980e3e0 CR3: 000000020d225000 CR4:
00000000000407f0
[ 553.110487] Stack:
[ 553.110487] ffff880204ed1ca8 ffffffffa068d7fc 0000000000000000
0000000000000000
[ 553.110487] 0000000000000000 ffff8802293d0000 ffff880202158000
ffffffff81cb7900
[ 553.110487] 0000000000000000 0000400000001c68 ffff8802086f5a40
000000000000000f
[ 553.110487] Call Trace:
[ 553.110487] [<ffffffffa068d7fc>] sctp_sendmsg+0x6bc/0xc80 [sctp]
[ 553.110487] [<ffffffff8128f185>] ? sock_has_perm+0x75/0x90
[ 553.110487] [<ffffffff815a3593>] inet_sendmsg+0x63/0xb0
[ 553.110487] [<ffffffff8128f2b3>] ? selinux_socket_sendmsg+0x23/0x30
[ 553.110487] [<ffffffff8151c5d6>] sock_sendmsg+0xa6/0xd0
[ 553.110487] [<ffffffff81637b05>] ? _raw_spin_unlock_bh+0x15/0x20
[ 553.110487] [<ffffffff8151cd38>] SYSC_sendto+0x128/0x180
[ 553.110487] [<ffffffff8151ce6b>] ? SYSC_connect+0xdb/0x100
[ 553.110487] [<ffffffffa0690031>] ? sctp_inet_listen+0x71/0x1f0
[sctp]
[ 553.110487] [<ffffffff8151d35e>] SyS_sendto+0xe/0x10
[ 553.110487] [<ffffffff81640202>] system_call_fastpath+0x16/0x1b
[ 553.110487] Code: e0 48 c7 c7 00 22 6a a0 e8 67 a3 f0 e0 48 c7 [...]
[ 553.110487] RIP [<ffffffffa0698017>] skb_orphan.part.9+0x4/0x6
[sctp]
[ 553.110487] RSP <ffff880204ed1bb8>
[ 553.121578] ---[ end trace 46c20c5903ef5be2 ]---
The approach taken here is to split data and control chunks
creation a bit. Data chunks already have memory accounting
so noting needs to happen. For control chunks, add stubs handlers.
Signed-off-by: Vlad Yasevich <vyasevich@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-08-13 15:04:02 -07:00
..
2013-07-30 15:54:28 -07:00
2013-05-14 13:02:30 -07:00
2013-08-03 10:32:25 -07:00
2013-05-28 13:11:01 -07:00
2013-05-28 21:58:54 -07:00
2013-06-13 02:36:09 -07:00
2013-06-24 01:46:01 -07:00
2013-07-31 15:11:50 -04:00
2013-08-04 18:41:52 -07:00
2013-05-28 13:11:01 -07:00
2013-05-28 13:11:01 -07:00
2013-07-24 17:54:48 -07:00
2013-08-10 01:16:44 -07:00
2013-03-22 10:31:16 -04:00
2013-07-24 17:54:48 -07:00
2013-06-13 02:36:09 -07:00
2013-07-12 16:09:14 -07:00
2013-03-25 12:23:41 -04:00
2013-07-16 17:09:22 -07:00
2013-05-28 13:11:01 -07:00
2013-08-10 00:35:33 -07:00
2013-08-08 22:24:59 -07:00
2013-05-28 13:11:01 -07:00
2013-07-19 17:34:40 -07:00
2013-07-14 19:36:58 -04:00
2013-07-30 16:26:16 -07:00
2013-07-02 16:33:25 -07:00
2013-04-07 16:28:01 -04:00
2013-07-23 14:02:08 +02:00
2013-04-30 03:55:20 -04:00
2013-05-27 22:50:59 -07:00
2013-08-03 21:36:46 -07:00
2013-08-02 16:57:01 -07:00
2013-08-03 21:36:46 -07:00
2013-06-13 02:36:09 -07:00
2013-07-31 01:19:43 +02:00
2013-07-01 13:19:43 -07:00
2013-08-10 01:16:44 -07:00
2013-06-13 02:36:09 -07:00
2013-06-13 02:36:09 -07:00
2013-04-22 14:58:14 -04:00
2013-06-13 02:36:09 -07:00
2013-02-21 12:05:51 -08:00
2013-08-03 21:36:46 -07:00
2013-08-13 15:04:02 -07:00
2013-08-03 21:36:46 -07:00
2013-08-01 15:54:33 -07:00
2013-08-11 22:02:36 -07:00
2013-07-27 22:14:06 -07:00
2013-07-25 09:52:46 +02:00
2013-07-01 18:15:25 -07:00
2013-07-31 14:56:36 -07:00
2013-06-06 11:52:14 -07:00
2013-08-03 21:36:46 -07:00
2013-05-27 22:50:59 -07:00
2013-08-01 15:11:17 -07:00