From patchwork Mon Dec 15 01:57:33 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Ortiz X-Patchwork-Id: 13965 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 76FE7DDFB2 for ; Mon, 15 Dec 2008 13:03:24 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751738AbYLOCDX (ORCPT ); Sun, 14 Dec 2008 21:03:23 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751568AbYLOCDV (ORCPT ); Sun, 14 Dec 2008 21:03:21 -0500 Received: from 42.mail-out.ovh.net ([213.251.189.42]:34885 "HELO 42.mail-out.ovh.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1751606AbYLOCDJ (ORCPT ); Sun, 14 Dec 2008 21:03:09 -0500 Received: (qmail 21479 invoked by uid 503); 15 Dec 2008 01:56:09 -0000 Received: from b7.ovh.net (HELO mail246.ha.ovh.net) (213.186.33.57) by 42.mail-out.ovh.net with SMTP; 15 Dec 2008 01:56:09 -0000 Received: from b0.ovh.net (HELO queue-out) (213.186.33.50) by b0.ovh.net with SMTP; 15 Dec 2008 01:56:29 -0000 Received: from aannecy-256-1-36-87.w90-10.abo.wanadoo.fr (HELO sortiz-mobl) (samuel%sortiz.org@90.10.35.87) by ns0.ovh.net with SMTP; 15 Dec 2008 01:56:28 -0000 Message-Id: <20081215015859.438954905@sortiz.org> References: <20081215015729.587697008@sortiz.org> User-Agent: quilt/0.46-1 Date: Mon, 15 Dec 2008 02:57:33 +0100 From: Samuel Ortiz To: "David S. Miller" Cc: netdev@vger.kernel.org, irda-users@lists.sourceforge.net Subject: [RFC PATCH 4/9] irda: reserve irda_skb on sock_alloc_send_skb() skbs Content-Disposition: inline; filename=0004-irda-reserve-irda_skb-on-sock_alloc_send_skb-skbs.patch X-Ovh-Tracer-Id: 13352046996279044246 X-Ovh-Remote: 90.10.35.87 (aannecy-256-1-36-87.w90-10.abo.wanadoo.fr) X-Ovh-Local: 213.186.33.20 (ns0.ovh.net) X-Spam-Check: DONE|H 0.5/N Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Those skbs are on the TX path, and need to have the irda_skb_cb space allocated as well. Signed-off-by: Samuel Ortiz --- net/irda/af_irda.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-) diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c index 61def98..8b0ac27 100644 --- a/net/irda/af_irda.c +++ b/net/irda/af_irda.c @@ -59,6 +59,7 @@ #include #include +#include static int irda_create(struct net *net, struct socket *sock, int protocol); @@ -1288,12 +1289,14 @@ static int irda_sendmsg(struct kiocb *iocb, struct socket *sock, len = self->max_data_size; } - skb = sock_alloc_send_skb(sk, len + self->max_header_size + 16, + skb = sock_alloc_send_skb(sk, len + self->max_header_size + 16 + + sizeof(struct irda_skb_cb), msg->msg_flags & MSG_DONTWAIT, &err); if (!skb) goto out_err; - skb_reserve(skb, self->max_header_size + 16); + skb_reserve(skb, self->max_header_size + 16 + + sizeof(struct irda_skb_cb)); skb_reset_transport_header(skb); skb_put(skb, len); err = memcpy_fromiovec(skb_transport_header(skb), msg->msg_iov, len); @@ -1534,12 +1537,13 @@ static int irda_sendmsg_dgram(struct kiocb *iocb, struct socket *sock, len = self->max_data_size; } - skb = sock_alloc_send_skb(sk, len + self->max_header_size, + skb = sock_alloc_send_skb(sk, len + self->max_header_size + + sizeof(struct irda_skb_cb), msg->msg_flags & MSG_DONTWAIT, &err); if (!skb) return -ENOBUFS; - skb_reserve(skb, self->max_header_size); + skb_reserve(skb, self->max_header_size + sizeof(struct irda_skb_cb)); skb_reset_transport_header(skb); IRDA_DEBUG(4, "%s(), appending user data\n", __func__); @@ -1629,12 +1633,13 @@ static int irda_sendmsg_ultra(struct kiocb *iocb, struct socket *sock, len = self->max_data_size; } - skb = sock_alloc_send_skb(sk, len + self->max_header_size, + skb = sock_alloc_send_skb(sk, len + self->max_header_size + + sizeof(struct irda_skb_cb), msg->msg_flags & MSG_DONTWAIT, &err); if (!skb) return -ENOBUFS; - skb_reserve(skb, self->max_header_size); + skb_reserve(skb, self->max_header_size + sizeof(struct irda_skb_cb)); skb_reset_transport_header(skb); IRDA_DEBUG(4, "%s(), appending user data\n", __func__);