From: Greg KH <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org,
alan@lxorguk.ukuu.org.uk, Benjamin Poirier <bpoirier@suse.de>,
"David S. Miller" <davem@davemloft.net>
Subject: [ 39/47] xfrm: take net hdr len into account for esp payload size calculation
Date: Thu, 07 Jun 2012 13:14:37 +0900 [thread overview]
Message-ID: <20120607041403.741999399@linuxfoundation.org> (raw)
In-Reply-To: <20120607041504.GA13819@kroah.com>
3.0-stable review patch. If anyone has any objections, please let me know.
------------------
From: Benjamin Poirier <bpoirier@suse.de>
[ Upstream commit 91657eafb64b4cb53ec3a2fbc4afc3497f735788 ]
Corrects the function that determines the esp payload size. The calculations
done in esp{4,6}_get_mtu() lead to overlength frames in transport mode for
certain mtu values and suboptimal frames for others.
According to what is done, mainly in esp{,6}_output() and tcp_mtu_to_mss(),
net_header_len must be taken into account before doing the alignment
calculation.
Signed-off-by: Benjamin Poirier <bpoirier@suse.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/ipv4/esp4.c | 24 +++++++++---------------
net/ipv6/esp6.c | 18 +++++++-----------
2 files changed, 16 insertions(+), 26 deletions(-)
--- a/net/ipv4/esp4.c
+++ b/net/ipv4/esp4.c
@@ -457,28 +457,22 @@ static u32 esp4_get_mtu(struct xfrm_stat
struct esp_data *esp = x->data;
u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4);
u32 align = max_t(u32, blksize, esp->padlen);
- u32 rem;
-
- mtu -= x->props.header_len + crypto_aead_authsize(esp->aead);
- rem = mtu & (align - 1);
- mtu &= ~(align - 1);
+ unsigned int net_adj;
switch (x->props.mode) {
- case XFRM_MODE_TUNNEL:
- break;
- default:
case XFRM_MODE_TRANSPORT:
- /* The worst case */
- mtu -= blksize - 4;
- mtu += min_t(u32, blksize - 4, rem);
- break;
case XFRM_MODE_BEET:
- /* The worst case. */
- mtu += min_t(u32, IPV4_BEET_PHMAXLEN, rem);
+ net_adj = sizeof(struct iphdr);
+ break;
+ case XFRM_MODE_TUNNEL:
+ net_adj = 0;
break;
+ default:
+ BUG();
}
- return mtu - 2;
+ return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) -
+ net_adj) & ~(align - 1)) + (net_adj - 2);
}
static void esp4_err(struct sk_buff *skb, u32 info)
--- a/net/ipv6/esp6.c
+++ b/net/ipv6/esp6.c
@@ -411,19 +411,15 @@ static u32 esp6_get_mtu(struct xfrm_stat
struct esp_data *esp = x->data;
u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4);
u32 align = max_t(u32, blksize, esp->padlen);
- u32 rem;
+ unsigned int net_adj;
- mtu -= x->props.header_len + crypto_aead_authsize(esp->aead);
- rem = mtu & (align - 1);
- mtu &= ~(align - 1);
+ if (x->props.mode != XFRM_MODE_TUNNEL)
+ net_adj = sizeof(struct ipv6hdr);
+ else
+ net_adj = 0;
- if (x->props.mode != XFRM_MODE_TUNNEL) {
- u32 padsize = ((blksize - 1) & 7) + 1;
- mtu -= blksize - padsize;
- mtu += min_t(u32, blksize - padsize, rem);
- }
-
- return mtu - 2;
+ return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) -
+ net_adj) & ~(align - 1)) + (net_adj - 2);
}
static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
next prev parent reply other threads:[~2012-06-07 4:26 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-07 4:15 [ 00/47] 3.0.34-stable review Greg KH
2012-06-07 4:13 ` [ 01/47] SCSI: fix scsi_wait_scan Greg KH
2012-06-07 4:14 ` [ 02/47] SCSI: Fix dm-multipath starvation when scsi host is busy Greg KH
2012-06-07 4:14 ` [ 03/47] mm: consider all swapped back pages in used-once logic Greg KH
2012-06-07 4:14 ` [ 04/47] mm: pmd_read_atomic: fix 32bit PAE pmd walk vs pmd_populate SMP race condition Greg KH
2012-06-07 4:14 ` [ 05/47] iwlwifi: update BT traffic load states correctly Greg KH
2012-06-07 4:14 ` [ 06/47] cifs: fix oops while traversing open file list (try #4) Greg KH
2012-06-07 4:14 ` [ 07/47] PARISC: fix boot failure on 32-bit systems caused by branch stubs placed before .text Greg KH
2012-06-07 4:14 ` [ 08/47] PARISC: fix TLB fault path on PA2.0 narrow systems Greg KH
2012-06-07 4:14 ` [ 09/47] solos-pci: Fix DMA support Greg KH
2012-06-07 4:14 ` [ 10/47] mac80211: fix ADDBA declined after suspend with wowlan Greg KH
2012-06-07 4:14 ` [ 11/47] NFSv4: Map NFS4ERR_SHARE_DENIED into an EACCES error instead of EIO Greg KH
2012-06-07 4:14 ` [ 12/47] drm/radeon: fix XFX quirk Greg KH
2012-06-07 4:14 ` [ 13/47] drm/i915: properly handle interlaced bit for sdvo dtd conversion Greg KH
2012-06-07 4:14 ` [ 14/47] drm/i915: wait for a vblank to pass after tv detect Greg KH
2012-06-07 4:14 ` [ 15/47] Bluetooth: Add support for Broadcom BCM20702A0 Greg KH
2012-06-07 4:14 ` [ 16/47] Bluetooth: Add support for BCM20702A0 [0a5c:21e3] Greg KH
2012-06-07 4:14 ` [ 17/47] Bluetooth: btusb: Add vendor specific ID (0a5c 21f3) for BCM20702A0 Greg KH
2012-06-07 4:14 ` [ 18/47] Bluetooth: btusb: add support for BCM20702A0 [0a5c:21e6] Greg KH
2012-06-07 4:14 ` [ 19/47] Bluetooth: btusb: Add USB device ID "0a5c 21e8" Greg KH
2012-06-07 4:14 ` [ 20/47] Bluetooth: btusb: Add vendor specific ID (0489 e042) for BCM20702A0 Greg KH
2012-06-07 4:14 ` [ 21/47] Bluetooth: btusb: typo in Broadcom SoftSailing id Greg KH
2012-06-07 4:14 ` [ 22/47] Add Foxconn / Hon Hai IDs for btusb module Greg KH
2012-06-07 4:14 ` [ 23/47] Bluetooth: Add support for Foxconn/Hon Hai AR5BBU22 0489:E03C Greg KH
2012-06-07 4:14 ` [ 24/47] ALSA: usb-audio: fix rate_list memory leak Greg KH
2012-06-07 4:14 ` [ 25/47] vfs: umount_tree() might be called on subtree that had never made it Greg KH
2012-06-07 4:14 ` [ 26/47] mtd: nand: fix scan_read_raw_oob Greg KH
2012-06-07 4:14 ` [ 27/47] drm/radeon: properly program gart on rv740, juniper, cypress, barts, hemlock Greg KH
2012-06-07 4:14 ` [ 28/47] drm/radeon: fix HD6790, HD6570 backend programming Greg KH
2012-06-07 4:14 ` [ 29/47] drm/ttm: Fix spinlock imbalance Greg KH
2012-06-07 4:14 ` [ 30/47] ipv4: Do not use dead fib_info entries Greg KH
2012-06-07 4:14 ` [ 31/47] ipv4: fix the rcu race between free_fib_info and ip_route_output_slow Greg KH
2012-06-07 4:14 ` [ 32/47] ipv6: fix incorrect ipsec fragment Greg KH
2012-06-07 4:14 ` [ 33/47] l2tp: fix oops in L2TP IP sockets for connect() AF_UNSPEC case Greg KH
2012-06-07 4:14 ` [ 34/47] pktgen: fix crash at module unload Greg KH
2012-06-07 4:14 ` [ 35/47] pktgen: fix module unload for good Greg KH
2012-06-07 4:14 ` [ 36/47] Revert "net: maintain namespace isolation between vlan and real device" Greg KH
2012-06-07 4:14 ` [ 37/47] sctp: check cached dst before using it Greg KH
2012-06-07 4:14 ` [ 38/47] skb: avoid unnecessary reallocations in __skb_cow Greg KH
2012-06-07 4:14 ` Greg KH [this message]
2012-06-07 4:14 ` [ 40/47] ext4: force ro mount if ext4_setup_super() fails Greg KH
2012-06-07 4:14 ` [ 41/47] ext4: add missing save_error_info() to ext4_error() Greg KH
2012-06-07 4:14 ` [ 42/47] ext4: dont trash state flags in EXT4_IOC_SETFLAGS Greg KH
2012-06-07 4:14 ` [ 43/47] ext4: add ext4_mb_unload_buddy in the error path Greg KH
2012-06-07 4:14 ` [ 44/47] ext4: remove mb_groups before tearing down the buddy_cache Greg KH
2012-06-07 4:14 ` [ 45/47] drm/radeon/kms: add new BTC PCI ids Greg KH
2012-06-07 4:14 ` [ 46/47] ACPI battery: only refresh the sysfs files when pertinent information changes Greg KH
2012-06-07 4:14 ` [ 47/47] wl1251: fix oops on early interrupt Greg KH
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=20120607041403.741999399@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=bpoirier@suse.de \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox