From: Alan Cox <alan@linux.intel.com>
To: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Cc: David Miller <davem@davemloft.net>,
Heikki Hannikainen <hessu@hes.iki.fi>,
Network Development <netdev@vger.kernel.org>,
Willem de Bruijn <willemb@google.com>
Subject: Re: Sending short raw packets using sendmsg() broke
Date: Tue, 01 Mar 2016 23:34:25 +0000 [thread overview]
Message-ID: <1456875265.7064.28.camel@linux.intel.com> (raw)
In-Reply-To: <CAF=yD-JOQZZnU6XE9FhEVbxstKmsB-ds58e5v678SiO24VV0+g@mail.gmail.com>
On Fri, 2016-02-26 at 12:33 -0500, Willem de Bruijn wrote:
> On Fri, Feb 26, 2016 at 9:44 AM, Alan Cox <alan@linux.intel.com>
> wrote:
> > On Thu, 2016-02-25 at 15:26 -0500, David Miller wrote:
> > > From: Heikki Hannikainen <hessu@hes.iki.fi>
> > > Date: Thu, 25 Feb 2016 21:36:07 +0200 (EET)
> > >
> > > > Commit 9c7077622dd9174 added a check, ll_header_truncated(),
> > > > which
> > > > requires that a packet transmitted using sendmsg() with
> > > > PF_PACKET,
> > > > SOCK_RAW must be longer than dev->hard_header_len.
> > >
> > > Fixed by:
> > >
> > > commit 880621c2605b82eb5af91a2c94223df6f5a3fb64
> > > Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
> > > Date: Sun Nov 22 17:46:09 2015 +0100
> > >
> > > packet: Allow packets with only a header (but no payload)
> >
> > The AX.25 case the header is variable length so this still doesn't
> > fix
> > the regression as far as I can see.
>
> Right. The simplest, if hacky, fix is to add something along the
> lines of
>
> static unsigned short netdev_min_hard_header_len(struct net_device
> *dev)
> {
> if (unlikely(dev->type ==ARPHDR_AX25))
> return AX25_KISS_HEADER_LEN;
> else
> return dev->hard_header_len;
> }
AX.25 is not unique in this. Also there are protocols where the minimum
header length for a valid raw frame is not the same as the minimum
sized header for encapsulation of an IP frame because the IP frame is
encapsulated with an extra header block.
> Depending on how the variable encoding scheme works, a basic min
>
> length check may still produce buggy headers that confuse the stack
> or
> driver. I need to read up on AX25. If so, then extending header_ops
> with an optional validate() function is a more generic approach of
> checking header sanity.
A validate() method is doable for NetROM, AX.25 and friends. So
something like
if (likely(len >= dev->hard_header_len))
return good;
if (proto->validate && proto->validate(skb))
return good;
return bad;
works for amateur radio at least, and I think could be extended ok for
any other cases like tunnels.
Alan
next prev parent reply other threads:[~2016-03-01 23:34 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-25 19:36 Sending short raw packets using sendmsg() broke Heikki Hannikainen
2016-02-25 20:26 ` David Miller
2016-02-26 14:44 ` Alan Cox
2016-02-26 17:33 ` Willem de Bruijn
2016-02-26 17:46 ` David Miller
2016-02-27 23:02 ` Willem de Bruijn
2016-03-02 0:00 ` Alan Cox
2016-03-03 16:40 ` Willem de Bruijn
2016-03-03 16:43 ` Willem de Bruijn
2016-03-04 15:54 ` Alan Cox
2016-03-04 16:33 ` Willem de Bruijn
2016-03-04 20:52 ` Willem de Bruijn
2016-03-01 23:34 ` Alan Cox [this message]
2016-02-26 17:34 ` David Miller
2016-02-25 20:49 ` Willem de Bruijn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1456875265.7064.28.camel@linux.intel.com \
--to=alan@linux.intel.com \
--cc=davem@davemloft.net \
--cc=hessu@hes.iki.fi \
--cc=netdev@vger.kernel.org \
--cc=willemb@google.com \
--cc=willemdebruijn.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.