From: Patrick McHardy <kaber@trash.net>
To: Pablo Neira <pablo@eurodev.net>
Cc: netfilter-devel@lists.netfilter.org,
Harald Welte <laforge@netfilter.org>
Subject: Re: [PATCH] peer_pid checking in ip_queue
Date: Tue, 23 Mar 2004 18:25:01 +0100 [thread overview]
Message-ID: <406072ED.8060304@trash.net> (raw)
In-Reply-To: <40601AE4.5070206@eurodev.net>
Hi Pablo,
Pablo Neira wrote:
> Hi,
>
> I patched ip_queue.c to modify the default behaviour if peer_pid is 0.
> In this case, there's no program in user space to receive the skbuff via
> netlink, but ip_queue will allocate space for the skbuff and after
> checking if peer_pid is 0, it will destroy this skbuff allocated. Am I
> missing anything?
peer_pid is protected by queue_lock, you move it out of the locked
section. This leads to a small race which can cause message loss.
Not sure if it's bad though as netlink is unreliable itself.
Regards
Patrick
>
> best regards,
> Pablo
>
> P.S: BTW, Harald, I noticed that I had some problems with my smtp server
> and some email got lost, I sent you an email with a "digest" of all my
> recent patches, did you receive it? If not, please let me know.
>
>
> ------------------------------------------------------------------------
>
> --- linux-2.6.3-old/net/ipv4/netfilter/ip_queue.c 2004-02-18 04:59:59.000000000 +0100
> +++ linux-2.6.3/net/ipv4/netfilter/ip_queue.c 2004-03-23 10:31:16.000000000 +0100
> @@ -277,6 +277,9 @@
> struct sk_buff *nskb;
> struct ipq_queue_entry *entry;
>
> + if (!peer_pid)
> + return -EINVAL;
> +
> if (copy_mode == IPQ_COPY_NONE)
> return -EAGAIN;
>
> @@ -303,9 +306,6 @@
>
> write_lock_bh(&queue_lock);
>
> - if (!peer_pid)
> - goto err_out_free_nskb;
> -
> /* netlink_unicast will either free the nskb or attach it to a socket */
> status = netlink_unicast(ipqnl, nskb, peer_pid, MSG_DONTWAIT);
> if (status < 0)
> @@ -318,9 +318,6 @@
> write_unlock_bh(&queue_lock);
> return status;
>
> -err_out_free_nskb:
> - kfree_skb(nskb);
> -
> err_out_unlock:
> write_unlock_bh(&queue_lock);
>
next prev parent reply other threads:[~2004-03-23 17:25 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-23 11:09 [PATCH] peer_pid checking in ip_queue Pablo Neira
2004-03-23 17:25 ` Patrick McHardy [this message]
2004-03-23 18:10 ` Pablo Neira
2004-03-23 22:44 ` Patrick McHardy
2004-03-24 0:07 ` Henrik Nordstrom
2004-03-24 0:42 ` Pablo Neira
2004-03-24 2:11 ` Patrick McHardy
2004-03-24 0:47 ` Patrick McHardy
2004-03-27 21:20 ` Harald Welte
2004-03-27 23:50 ` Patrick McHardy
2004-03-27 21:17 ` Harald Welte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=406072ED.8060304@trash.net \
--to=kaber@trash.net \
--cc=laforge@netfilter.org \
--cc=netfilter-devel@lists.netfilter.org \
--cc=pablo@eurodev.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.