[3.5.y.z extended stable] Patch "alpha: fix broken network checksum" has been added to staging queue
Luis Henriques
luis.henriques at canonical.com
Tue Feb 18 13:24:58 UTC 2014
Hi Mikulas,
On Mon, Feb 17, 2014 at 12:36:23PM -0500, Mikulas Patocka wrote:
> Hi
>
> That patch is needed on 3.12 and 3.13, you don't need to backport it to
> older kernels.
>
> Mikulas
>
Thank you for your review. I have dropped this patch from the 3.11 kernel
before releasing it (I saw discussion regarding this patch in the 3.12
stable kernel).
Unfortunately, it looks like I forgot to do the same for the 3.5 kernel and
version 3.5.7.30 has been released with this patch. I will revert it for
the next release (unless you believe this patch is harmless in this
kernel, and there's not need to revert it).
Cheers,
--
Luís
>
> On Wed, 5 Feb 2014, Luis Henriques wrote:
>
> > This is a note to let you know that I have just added a patch titled
> >
> > alpha: fix broken network checksum
> >
> > to the linux-3.5.y-queue branch of the 3.5.y.z extended stable tree
> > which can be found at:
> >
> > http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.5.y-queue
> >
> > If you, or anyone else, feels it should not be added to this tree, please
> > reply to this email.
> >
> > For more information about the 3.5.y.z tree, see
> > https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
> >
> > Thanks.
> > -Luis
> >
> > ------
> >
> > >From 2b74e10f940d5f100a157fe0c53d31675fbc4625 Mon Sep 17 00:00:00 2001
> > From: Mikulas Patocka <mpatocka at redhat.com>
> > Date: Wed, 22 Jan 2014 23:04:33 -0500
> > Subject: alpha: fix broken network checksum
> >
> > commit 0ef38d70d4118b2ce1a538d14357be5ff9dc2bbd upstream.
> >
> > The patch 3ddc5b46a8e90f3c9251338b60191d0a804b0d92 breaks networking on
> > alpha (there is a follow-up fix 5cfe8f1ba5eebe6f4b6e5858cdb1a5be4f3272a6,
> > but networking is still broken even with the second patch).
> >
> > The patch 3ddc5b46a8e90f3c9251338b60191d0a804b0d92 makes
> > csum_partial_copy_from_user check the pointer with access_ok. However,
> > csum_partial_copy_from_user is called also from csum_partial_copy_nocheck
> > and csum_partial_copy_nocheck is called on kernel pointers and it is
> > supposed not to check pointer validity.
> >
> > This bug results in ssh session hangs if the system is loaded and bulk
> > data are printed to ssh terminal.
> >
> > This patch fixes csum_partial_copy_nocheck to call set_fs(KERNEL_DS), so
> > that access_ok in csum_partial_copy_from_user accepts kernel-space
> > addresses.
> >
> > Signed-off-by: Mikulas Patocka <mpatocka at redhat.com>
> > Signed-off-by: Matt Turner <mattst88 at gmail.com>
> > Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
> > ---
> > arch/alpha/lib/csum_partial_copy.c | 9 +++++++--
> > 1 file changed, 7 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/alpha/lib/csum_partial_copy.c b/arch/alpha/lib/csum_partial_copy.c
> > index 40736da..1d2ef5a 100644
> > --- a/arch/alpha/lib/csum_partial_copy.c
> > +++ b/arch/alpha/lib/csum_partial_copy.c
> > @@ -373,6 +373,11 @@ csum_partial_copy_from_user(const void __user *src, void *dst, int len,
> > __wsum
> > csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum)
> > {
> > - return csum_partial_copy_from_user((__force const void __user *)src,
> > - dst, len, sum, NULL);
> > + __wsum checksum;
> > + mm_segment_t oldfs = get_fs();
> > + set_fs(KERNEL_DS);
> > + checksum = csum_partial_copy_from_user((__force const void __user *)src,
> > + dst, len, sum, NULL);
> > + set_fs(oldfs);
> > + return checksum;
> > }
> > --
> > 1.8.3.2
> >
More information about the kernel-team
mailing list