From 4445ae613670135104890c0f325aad86cef68284 Mon Sep 17 00:00:00 2001 From: "Denis V. Lunev" Date: Fri, 21 Dec 2007 02:01:53 -0800 Subject: [PATCH] --- yaml --- r: 75145 b: refs/heads/master c: d883a0367149506e8b7a3f31891d1ea30b9377f3 h: refs/heads/master i: 75143: fb55687b2f7af44a0c4f215b06728857a92bfb44 v: v3 --- [refs] | 2 +- trunk/net/ipv4/fib_frontend.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index d2b3c369992a..de77cadc6eb4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1ac70e7ad24a88710cf9b6d7ababaefa2b575df0 +refs/heads/master: d883a0367149506e8b7a3f31891d1ea30b9377f3 diff --git a/trunk/net/ipv4/fib_frontend.c b/trunk/net/ipv4/fib_frontend.c index 732d8f088b13..97abf934d185 100644 --- a/trunk/net/ipv4/fib_frontend.c +++ b/trunk/net/ipv4/fib_frontend.c @@ -804,10 +804,13 @@ static void nl_fib_input(struct sk_buff *skb) nlh = nlmsg_hdr(skb); if (skb->len < NLMSG_SPACE(0) || skb->len < nlh->nlmsg_len || - nlh->nlmsg_len < NLMSG_LENGTH(sizeof(*frn))) { - kfree_skb(skb); + nlh->nlmsg_len < NLMSG_LENGTH(sizeof(*frn))) return; - } + + skb = skb_clone(skb, GFP_KERNEL); + if (skb == NULL) + return; + nlh = nlmsg_hdr(skb); frn = (struct fib_result_nl *) NLMSG_DATA(nlh); tb = fib_get_table(frn->tb_id_in);