Thread (6 messages) 6 messages, 5 authors, 2013-05-31

Re: [Patch net-next v3] net: clean up skb headers code

flat view

From: Simon Horman <horms@verge.net.au>
Date: 2013-05-31 00:17:57

On Thu, May 30, 2013 at 10:05:18PM +0100, Ben Hutchings wrote:
On Thu, 2013-05-30 at 13:16 -0700, David Miller wrote:
quoted
From: "David Laight" <redacted>
Date: Thu, 30 May 2013 12:18:13 +0100
quoted
quoted
commit 1a37e412a0225fcba5587 (net: Use 16bits for *_headers
fields of struct skbuff) converts skb->*_header to u16,
some #if NET_SKBUFF_DATA_USES_OFFSET are now useless,
and to be safe, we could just use "X = ~(typeof(X))0;"
as suggested by David and Ben.
IIRC ~(unsigned short)0 is the same as ~0 and will be -1.
define an actual constant with value 0xffff
The problem with doing that is that if this type is changed again,
we'lll go through this same circus changing the constant everywhere
and missing some cases.

I absolutely want to see a version of this fix that makes sure that if
the type changes, either the constantly automatically change (that's
the "typeof(X)" approach) or the build breaks spectacularly until the
value is fixed up.
Let's just give the 'invalid' value a name and define it right next to
those fields.  It might be worth reintroducing sk_buff_data_t too, since
there was at least one place which wanted to save and restore offsets in
local variables.
sk_buff_data_t was not removed, its just used for less fields.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help