Message ID | 20180607162233.hepodtvuo7ictel2@x220t (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On Thu, Jun 7, 2018 at 12:22 PM, Alexander Aring <aring@mojatatu.com> wrote: > Hi, > > On Wed, Jun 06, 2018 at 04:26:19PM -0400, Willem de Bruijn wrote: >> On Wed, Jun 6, 2018 at 2:11 PM, David Miller <davem@davemloft.net> wrote: >> > From: Alexander Aring <aring@mojatatu.com> >> > Date: Wed, 6 Jun 2018 14:09:20 -0400 >> > >> >> okay, then you want to have this patch for net-next? As an optimization? >> >> >> >> Of course, when it's open again. >> > >> > Like you, I have questions about where this adjustment is applied and >> > why. So I'm not sure yet. >> > >> > For example, only IPV6 really takes it into consideration and as you >> > saw only really for the fragmentation path and not the normal output >> > path. >> > >> > This needs more consideration and investigation. >> >> This is the unconditional skb_put in ieee802154_tx. In many cases >> there is some tailroom due to SKB_DATA_ALIGN in __alloc_skb, >> so it may take a specific case to not have even 2 bytes of tailroom >> available. > > Yes it's in ieee802154_tx, but we need tailroom not just for checksum. > The bugreport is related to the two bytes of tailroom, because virtual > hardware doing checksum by software. The most real transceivers offload > this feature, so zero tailroom is needed. > > I will of course add checks before adding L2 header for headroom and > tailroom in related subsystem code. > > In IEEE 802.15.4 and secured enabled frames we need a MIC field at the > end of the frame. In worst case this can be 16 bytes. > > I looked ethernet macsec feature and it seems they need to have a similar > reseved tailroom which is 16 bytes by default (max 32 bytes). Allocating with necessary tailroom to avoid a realloc in the path sounds fine to me, too. Packet sockets also take needed_tailroom into account, to give another example. We just have to avoid papering over bugs. Fixing the locations that unconditionally move the tail pointer beyond the allocated region is more important. -- To unsubscribe from this list: send the line "unsubscribe linux-wpan" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 7de88b33d5b9..687323c0caf5 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -522,7 +522,7 @@ static bool macsec_validate_skb(struct sk_buff *skb, u16 icv_len) } #define MACSEC_NEEDED_HEADROOM (macsec_extra_len(true)) -#define MACSEC_NEEDED_TAILROOM MACSEC_STD_ICV_LEN +#define MACSEC_NEEDED_TAILROOM MACSEC_MAX_ICV_LEN static void macsec_fill_iv(unsigned char *iv, sci_t sci, u32 pn) {