[ 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