From: Cong Wang <amwang@redhat.com>
To: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Cc: opurdila@ixiacom.com, eric.dumazet@gmail.com,
netdev@vger.kernel.org, nhorman@tuxdriver.com,
davem@davemloft.net, ebiederm@xmission.com,
linux-kernel@vger.kernel.org
Subject: Re: [Patch 3/3] net: reserve ports for applications using fixed port numbers
Date: Tue, 13 Apr 2010 16:48:32 +0800 [thread overview]
Message-ID: <4BC42FE0.4040601@redhat.com> (raw)
In-Reply-To: <4BC41994.7030707@redhat.com>
Cong Wang wrote:
> Tetsuo Handa wrote:
>> Hello.
>>
>>> --- linux-2.6.orig/drivers/infiniband/core/cma.c
>>> +++ linux-2.6/drivers/infiniband/core/cma.c
>>> @@ -1980,6 +1980,8 @@ retry:
>>> /* FIXME: add proper port randomization per like inet_csk_get_port */
>>> do {
>>> ret = idr_get_new_above(ps, bind_list, next_port, &port);
>>> + if (!ret && inet_is_reserved_local_port(port))
>>> + ret = -EAGAIN;
>>> } while ((ret == -EAGAIN) && idr_pre_get(ps, GFP_KERNEL));
>>>
>>> if (ret)
>>>
>> I think above part is wrong. Below program
> ...
>> This result suggests that above loop will continue until idr_pre_get() fails
>> due to out of memory if all ports were reserved.
>>
>> Also, if idr_get_new_above() returned 0, bind_list (which is a kmalloc()ed
>> pointer) is already installed into a free slot (see comment on
>> idr_get_new_above_int()). Thus, simply calling idr_get_new_above() again will
>> install the same pointer into multiple slots. I guess it will malfunction later.
>
> Thanks for testing!
>
> How about:
>
> + if (!ret && inet_is_reserved_local_port(port))
> + ret = -EBUSY;
>
> ? So that it will break the loop and return error.
>
Or use the similar trick:
int tries = 10;
...
if(!ret && inet_is_reserved_local_port(port)) {
if (tries--)
ret = -EAGAIN;
else
ret = -EBUSY;
}
Any comments?
next prev parent reply other threads:[~2010-04-13 8:44 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-12 10:03 [Patch v8 0/3] net: reserve ports for applications using fixed port numbers Amerigo Wang
2010-04-12 10:04 ` [Patch 1/3] sysctl: refactor integer handling proc code Amerigo Wang
2010-04-13 11:18 ` Alexey Dobriyan
2010-04-13 7:35 ` Cong Wang
2010-04-12 10:04 ` [Patch 2/3] sysctl: add proc_do_large_bitmap Amerigo Wang
2010-04-12 10:04 ` [Patch 3/3] net: reserve ports for applications using fixed port numbers Amerigo Wang
2010-04-13 1:21 ` Tetsuo Handa
2010-04-13 7:13 ` Cong Wang
2010-04-13 8:48 ` Cong Wang [this message]
2010-04-13 13:07 ` Tetsuo Handa
2010-04-13 16:32 ` Sean Hefty
2010-04-14 2:01 ` [PATCH] Infiniband: Randomize local port allocation penguin-kernel
2010-04-14 4:38 ` Cong Wang
2010-04-15 0:01 ` Sean Hefty
2010-04-15 2:29 ` Tetsuo Handa
[not found] ` <201004150229.o3F2T4dZ054768-etx+eQDEXHD7nzcFbJAaVXf5DAMn2ifp@public.gmane.org>
2010-04-15 19:55 ` [PATCH] rdma/cm: " Sean Hefty
2010-04-15 19:55 ` Sean Hefty
2010-04-16 2:22 ` Cong Wang
[not found] ` <4BC7C9CF.20403-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-04-16 13:54 ` Tetsuo Handa
2010-04-16 13:54 ` Tetsuo Handa
[not found] ` <201004162254.FJF73478.SHOOMOFtQFVJLF-JPay3/Yim36HaxMnTkn67Xf5DAMn2ifp@public.gmane.org>
2010-04-16 20:30 ` David Miller
2010-04-16 20:30 ` David Miller
2010-04-20 4:34 ` Cong Wang
2010-04-21 23:19 ` [PATCH] Infiniband: " Roland Dreier
2010-04-21 23:22 ` Roland Dreier
-- strict thread matches above, loose matches on Subject: below --
2010-05-05 10:26 [Patch v10 0/3] net: reserve ports for applications using fixed port numbers Amerigo Wang
2010-05-05 10:27 ` [Patch 3/3] " Amerigo Wang
2010-04-30 8:25 [Patch v9 0/3] " Amerigo Wang
2010-04-30 8:25 ` [Patch 3/3] " Amerigo Wang
2010-04-09 10:10 [Patch v7 0/3] " Amerigo Wang
2010-04-09 10:11 ` [Patch 3/3] " Amerigo Wang
2010-04-09 13:21 ` Tetsuo Handa
2010-04-12 6:52 ` Cong Wang
2010-04-12 7:06 ` Tetsuo Handa
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=4BC42FE0.4040601@redhat.com \
--to=amwang@redhat.com \
--cc=davem@davemloft.net \
--cc=ebiederm@xmission.com \
--cc=eric.dumazet@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nhorman@tuxdriver.com \
--cc=opurdila@ixiacom.com \
--cc=penguin-kernel@i-love.sakura.ne.jp \
/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.