From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933238Ab0D3RXK (ORCPT ); Fri, 30 Apr 2010 13:23:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:13490 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933117Ab0D3RWT (ORCPT ); Fri, 30 Apr 2010 13:22:19 -0400 Date: Thu, 29 Apr 2010 17:26:42 +0300 From: "Michael S. Tsirkin" To: Rusty Russell , "Michael S. Tsirkin" , Amit Shah , Mark McLoughlin , Tejun Heo , Eric Van Hensbergen , Shirley Ma , "Aneesh Kumar K.V" , linux-kernel@vger.kernel.org Subject: [PATCH 2/2] virtio-net: pass gfp to add_buf Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Mutt-Fcc: =sent User-Agent: Mutt/1.5.19 (2009-01-05) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org virtio-net bounces buffer allocations off to a thread if it can't allocate buffers from the atomic pool. However, if posting buffers still requires atomic buffers, this is unlikely to succeed. Fix by passing in the proper gfp_t parameter. Signed-off-by: Michael S. Tsirkin --- drivers/net/virtio_net.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 91738d8..fca44b2 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -339,7 +339,7 @@ static int add_recvbuf_small(struct virtnet_info *vi, gfp_t gfp) skb_to_sgvec(skb, sg + 1, 0, skb->len); - err = virtqueue_add_buf(vi->rvq, sg, 0, 2, skb); + err = virtqueue_add_buf_gfp(vi->rvq, sg, 0, 2, skb, gfp); if (err < 0) dev_kfree_skb(skb); @@ -386,8 +386,8 @@ static int add_recvbuf_big(struct virtnet_info *vi, gfp_t gfp) /* chain first in list head */ first->private = (unsigned long)list; - err = virtqueue_add_buf(vi->rvq, sg, 0, MAX_SKB_FRAGS + 2, - first); + err = virtqueue_add_buf_gfp(vi->rvq, sg, 0, MAX_SKB_FRAGS + 2, + first, gfp); if (err < 0) give_pages(vi, first); @@ -406,7 +406,7 @@ static int add_recvbuf_mergeable(struct virtnet_info *vi, gfp_t gfp) sg_init_one(&sg, page_address(page), PAGE_SIZE); - err = virtqueue_add_buf(vi->rvq, &sg, 0, 1, page); + err = virtqueue_add_buf_gfp(vi->rvq, &sg, 0, 1, page, gfp); if (err < 0) give_pages(vi, page); -- 1.7.1.rc1.22.g3163