From edae6ba086523ffe48684f8cd8f0126a87d49a23 Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Mon, 5 Nov 2007 21:03:24 -0800 Subject: [PATCH] --- yaml --- r: 73252 b: refs/heads/master c: 429f08e950a88cd826b203ea898c2f2d0f7db9de h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/ipv4/ip_output.c | 28 +++++++++++++--------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/[refs] b/[refs] index 573f4965cbfa..0cf68c57e21f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e011ff48abc1b0ee97cde26b7700d2cca689e7c3 +refs/heads/master: 429f08e950a88cd826b203ea898c2f2d0f7db9de diff --git a/trunk/net/ipv4/ip_output.c b/trunk/net/ipv4/ip_output.c index e5f7dc2de303..fd99fbd685ea 100644 --- a/trunk/net/ipv4/ip_output.c +++ b/trunk/net/ipv4/ip_output.c @@ -1183,6 +1183,17 @@ ssize_t ip_append_page(struct sock *sk, struct page *page, return err; } +static void ip_cork_release(struct inet_sock *inet) +{ + inet->cork.flags &= ~IPCORK_OPT; + kfree(inet->cork.opt); + inet->cork.opt = NULL; + if (inet->cork.rt) { + ip_rt_put(inet->cork.rt); + inet->cork.rt = NULL; + } +} + /* * Combined all pending IP fragments on the socket as one IP datagram * and push them out. @@ -1276,13 +1287,7 @@ int ip_push_pending_frames(struct sock *sk) } out: - inet->cork.flags &= ~IPCORK_OPT; - kfree(inet->cork.opt); - inet->cork.opt = NULL; - if (inet->cork.rt) { - ip_rt_put(inet->cork.rt); - inet->cork.rt = NULL; - } + ip_cork_release(inet); return err; error: @@ -1295,19 +1300,12 @@ int ip_push_pending_frames(struct sock *sk) */ void ip_flush_pending_frames(struct sock *sk) { - struct inet_sock *inet = inet_sk(sk); struct sk_buff *skb; while ((skb = __skb_dequeue_tail(&sk->sk_write_queue)) != NULL) kfree_skb(skb); - inet->cork.flags &= ~IPCORK_OPT; - kfree(inet->cork.opt); - inet->cork.opt = NULL; - if (inet->cork.rt) { - ip_rt_put(inet->cork.rt); - inet->cork.rt = NULL; - } + ip_cork_release(inet_sk(sk)); }