Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936053AbcJZWyd (ORCPT ); Wed, 26 Oct 2016 18:54:33 -0400 Received: from pb-sasl2.pobox.com ([64.147.108.67]:50768 "EHLO sasl.smtp.pobox.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933885AbcJZWy3 (ORCPT ); Wed, 26 Oct 2016 18:54:29 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=subject:to :references:cc:from:message-id:date:mime-version:in-reply-to :content-type:content-transfer-encoding; q=dns; s=sasl; b=pJRUYY nyt8Ht5N9Ik3RvbVmC7OQ8Y6bsyyiWHPbX1xSkTA9GsTTVvsF0CqwkOF0xUP2qzD /Bnv+t1S3Ttn6SV6tKde/eixBKbQxDOFtFZIgwAHanE7cDQqfEbrxwl3IXNxCAx2 ElsSTZvzEDT9KVJCWhZUOFj7x5ZViwDcySj14= Subject: Re: [PATCH] drivers/net/usb/r8152 fix broken rx checksums To: nic_swsd@realtek.com, netdev@vger.kernel.org, Linux Kernel References: <987cfbab-2b48-e28c-1706-967cb2051d63@pobox.com> Cc: stable@vger.kernel.org From: Mark Lord Message-ID: Date: Wed, 26 Oct 2016 18:54:26 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 MIME-Version: 1.0 In-Reply-To: <987cfbab-2b48-e28c-1706-967cb2051d63@pobox.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Pobox-Relay-ID: 25A8F200-9BCF-11E6-93B2-E896F1301B6D-82205200!pb-sasl2.pobox.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1651 Lines: 47 On 16-10-26 06:36 PM, Mark Lord wrote: > The r8152 driver has been broken since (approx) 3.6.16, Correction: broken since 3.16.xx. > when support was added for hardware rx checksum on newer chip versions. > Symptoms include random segfaults and silent data corruption over NFS. > > This does not work on the VER_02 dongle I have here > when used with a slow embedded system CPU. > Google reveals others reporting similar issues on Raspberry Pi. > > So, disable hardware rx checksum for VER_02, and fix > an obvious coding error for IPV6 checksums in the same function. > > Because this bug results in silent data corruption, > it is a good candidate for back-porting to -stable >= 3.16.xx. > Patch attached (to deal with buggy mailer) and also below for review. > > Signed-off-by: Mark Lord > > --- old/drivers/net/usb/r8152.c 2016-09-30 04:20:43.000000000 -0400 > +++ linux/drivers/net/usb/r8152.c 2016-10-26 14:15:44.932517676 -0400 > @@ -1645,7 +1645,7 @@ > u8 checksum = CHECKSUM_NONE; > u32 opts2, opts3; > > - if (tp->version == RTL_VER_01) > + if (tp->version == RTL_VER_01 || tp->version == RTL_VER_02) > goto return_result; > > opts2 = le32_to_cpu(rx_desc->opts2); > @@ -1660,7 +1660,7 @@ > checksum = CHECKSUM_NONE; > else > checksum = CHECKSUM_UNNECESSARY; > - } else if (RD_IPV6_CS) { > + } else if (opts2 & RD_IPV6_CS) { > if ((opts2 & RD_UDP_CS) && !(opts3 & UDPF)) > checksum = CHECKSUM_UNNECESSARY; > else if ((opts2 & RD_TCP_CS) && !(opts3 & TCPF)) -- Mark Lord Real-Time Remedies Inc. mlord@pobox.com