[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