[ 3.8.y.z extended stable ] Patch "atl1c: Fix misuse of netdev_alloc_skb in refilling rx ring" has been added to staging queue

Kamal Mostafa kamal at canonical.com
Thu Aug 15 17:56:47 UTC 2013


On Wed, 2013-08-14 at 18:05 -0700, Kamal Mostafa wrote:
> This is a note to let you know that I have just added a patch titled
> 
>     atl1c: Fix misuse of netdev_alloc_skb in refilling rx ring


I see now that this patch was reverted and replaced, so I'll drop it
from the 3.8.y stable queue.  I'll merge its replacement into 3.8-stable
if/when it arrives in a future batch from David Miller.

 -Kamal



> to the linux-3.8.y-queue branch of the 3.8.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.8.y-queue
> 
> This patch is scheduled to be released in version 3.8.13.7.
> 
> 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.8.y.z tree, see
> https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
> 
> Thanks.
> -Kamal
> 
> ------
> 
> From 797217540b4cd9e4d119a533ce7b6693c926064f Mon Sep 17 00:00:00 2001
> From: Neil Horman <nhorman at tuxdriver.com>
> Date: Fri, 26 Jul 2013 12:47:14 -0400
> Subject: atl1c: Fix misuse of netdev_alloc_skb in refilling rx ring
> 
> commit ebe7fdbaf3e90ea22feade6c9f5e50f42b23b6d8 upstream.
> 
> atl1c uses netdev_alloc_skb to refill its rx dma ring, but that call makes no
> guarantees about the suitability of the memory for use in DMA.  As a result
> we've gotten reports of atl1c drivers occasionally hanging and needing to be
> reset:
> https://bugzilla.kernel.org/show_bug.cgi?id=54021
> 
> Fix this by modifying the call to use the internal version __netdev_alloc_skb,
> where you can set the gfp_mask explicitly to include GFP_DMA.
> 
> Tested by two reporters in the above bug, who have the hardware to validate it.
> Both report immediate cessation of the problem with this patch
> 
> Signed-off-by: Neil Horman <nhorman at tuxdriver.com>
> CC: Jay Cliburn <jcliburn at gmail.com>
> CC: "David S. Miller" <davem at davemloft.net>
> Tested-by: Luis Henriques <luis.henriques at canonical.com>
> Tested-by: Vincent Alquier <vincent.alquier at gmail.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> Signed-off-by: Kamal Mostafa <kamal at canonical.com>
> ---
>  drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
> index bfcb8bc..4e438ff 100644
> --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
> +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
> @@ -1663,7 +1663,7 @@ static int atl1c_alloc_rx_buffer(struct atl1c_adapter *adapter)
>  	while (next_info->flags & ATL1C_BUFFER_FREE) {
>  		rfd_desc = ATL1C_RFD_DESC(rfd_ring, rfd_next_to_use);
> 
> -		skb = netdev_alloc_skb(adapter->netdev, adapter->rx_buffer_len);
> +		skb = __netdev_alloc_skb(adapter->netdev, adapter->rx_buffer_len, GFP_ATOMIC|GFP_DMA);
>  		if (unlikely(!skb)) {
>  			if (netif_msg_rx_err(adapter))
>  				dev_warn(&pdev->dev, "alloc rx buffer failed\n");
> --
> 1.8.1.2
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20130815/fcad28ad/attachment.sig>


More information about the kernel-team mailing list