[SK_BUFF]: Convert skb->tail to sk_buff_data_t
So that it is also an offset from skb->head, reduces its size from 8 to 4 bytes on 64bit architectures, allowing us to combine the 4 bytes hole left by the layer headers conversion, reducing struct sk_buff size to 256 bytes, i.e. 4 64byte cachelines, and since the sk_buff slab cache is SLAB_HWCACHE_ALIGN... :-) Many calculations that previously required that skb->{transport,network, mac}_header be first converted to a pointer now can be done directly, being meaningful as offsets or pointers. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
be8bd86321
commit
27a884dc3c
@@ -1073,7 +1073,7 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt,
|
||||
goto out;
|
||||
}
|
||||
va_copy(args2, args);
|
||||
len = vsnprintf(skb->tail, avail, fmt, args);
|
||||
len = vsnprintf(skb_tail_pointer(skb), avail, fmt, args);
|
||||
if (len >= avail) {
|
||||
/* The printk buffer is 1024 bytes long, so if we get
|
||||
* here and AUDIT_BUFSIZ is at least 1024, then we can
|
||||
@@ -1082,7 +1082,7 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt,
|
||||
max_t(unsigned, AUDIT_BUFSIZ, 1+len-avail));
|
||||
if (!avail)
|
||||
goto out;
|
||||
len = vsnprintf(skb->tail, avail, fmt, args2);
|
||||
len = vsnprintf(skb_tail_pointer(skb), avail, fmt, args2);
|
||||
}
|
||||
if (len > 0)
|
||||
skb_put(skb, len);
|
||||
@@ -1143,7 +1143,7 @@ void audit_log_hex(struct audit_buffer *ab, const unsigned char *buf,
|
||||
return;
|
||||
}
|
||||
|
||||
ptr = skb->tail;
|
||||
ptr = skb_tail_pointer(skb);
|
||||
for (i=0; i<len; i++) {
|
||||
*ptr++ = hex[(buf[i] & 0xF0)>>4]; /* Upper nibble */
|
||||
*ptr++ = hex[buf[i] & 0x0F]; /* Lower nibble */
|
||||
@@ -1175,7 +1175,7 @@ static void audit_log_n_string(struct audit_buffer *ab, size_t slen,
|
||||
if (!avail)
|
||||
return;
|
||||
}
|
||||
ptr = skb->tail;
|
||||
ptr = skb_tail_pointer(skb);
|
||||
*ptr++ = '"';
|
||||
memcpy(ptr, string, slen);
|
||||
ptr += slen;
|
||||
|
Reference in New Issue
Block a user