On Wed, Jul 19, 2023 at 6:10 AM David Laight <David.Laight@xxxxxxxxxx> wrote: > > From: Alexei Starovoitov > > Sent: 19 July 2023 00:40 > > > > Network drivers always call skb_header_pointer() with non-null buffer. > > Remove !buffer check to prevent accidental misuse of skb_header_pointer(). > > Introduce skb_pointer_if_linear() instead. > > > ... > > +static inline void * __must_check > > +skb_pointer_if_linear(const struct sk_buff *skb, int offset, int len) > > +{ > > + if (likely(skb_headlen(skb) - offset >= len)) > > + return skb->data + offset; > > + return NULL; > > +} > > Shouldn't both 'offset' and 'len' be 'unsigned int' ? > > The check should probably be written: > offset + len <= skb_headlen(skb) > so that it fails if 'offset' is also large. > (Provided 'offset + len' itself doesn't wrap.) I agree that this style is easier to read, but consistency with skb_header_pointer() trumps all such considerations.