Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[INET]: Change protocol field in struct inet_protosw to u16

[acme@newtoy net-2.6.20]$ pahole /tmp/tcp_ipv6.o inet_protosw
/* /pub/scm/linux/kernel/git/acme/net-2.6.20/include/net/protocol.h:69 */
struct inet_protosw {
struct list_head list; /* 0 8 */
short unsigned int type; /* 8 2 */

/* XXX 2 bytes hole, try to pack */

int protocol; /* 12 4 */
struct proto * prot; /* 16 4 */
const struct proto_ops * ops; /* 20 4 */
int capability; /* 24 4 */
char no_check; /* 28 1 */
unsigned char flags; /* 29 1 */
}; /* size: 32, sum members: 28, holes: 1, sum holes: 2, padding: 2 */

So that we can kill that hole, protocol can only go all the way to 255 (RAW).

Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>

authored by

Arnaldo Carvalho de Melo and committed by
David S. Miller
ee41e2df 3a137d20

+1 -1
+1 -1
include/net/protocol.h
··· 71 71 72 72 /* These two fields form the lookup key. */ 73 73 unsigned short type; /* This is the 2nd argument to socket(2). */ 74 - int protocol; /* This is the L4 protocol number. */ 74 + unsigned short protocol; /* This is the L4 protocol number. */ 75 75 76 76 struct proto *prot; 77 77 const struct proto_ops *ops;