All of lore.kernel.org
 help / color / mirror / Atom feed
From: Keiichi KII <k-keiichi@bx.jp.nec.com>
To: Satyam Sharma <satyam.sharma@gmail.com>
Cc: Matt Mackall <mpm@selenic.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Miller <davem@davemloft.net>,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [RFC][PATCH -mm take5 4/7] using symlink for the net_device
Date: Tue, 19 Jun 2007 19:04:19 +0900	[thread overview]
Message-ID: <4677AA23.1080708@bx.jp.nec.com> (raw)
In-Reply-To: <a781481a0706131203g405a4407y1212bb397f14e8eb@mail.gmail.com>

Hello Satyam,

> and this is why we have to use the dual-list mechanism to react to the net
> device rename. This isn't so obvious, a comment at the point where you
> declare modify_target_list would be nice? (BTW temporary_list would be
> a better name for that, IMO)

All right, my patches are short of comments. So, I will add comments 
to the ambiguous codes.

> Ok, so reading through the code makes it obvious that this mutex is used
> to protect against the following race:
> 
> Thread #1                               Thread #2
> =========                               =========
> 
> [ NETDEV_CHANGENAME notifier ]          [ ioctl(NETCON_REMOVE_TARGET) ]
> 
> netconsole_event()
> move from target_list to temp list
> work on temp list
>                                        kobject_unregister()
>                                        -> release_target()
>                                           -> remove_target()
> move back to target_list
> 
> Which would mean a deleted/removed target added back => *boom*
> 
> But, the race still hasn't been closed properly!
> 
> You're taking the mutex only around "work on temp list" which is
> insufficient, you need to ensure atomicity inside netconsole_event()
> _completely_ like this (renaming netdev_change_sem to
> netdev_changename_mtx):

After the target moves from target_list to temporary_list, 
the kobject_unregister() of possible raced target isn't called 
in ioctl(NETCON_REMOVE_TARGET) because the target_list doesn't contain 
the target .

I have the wrong idea?

>> +static char *make_netdev_class_name(char *netdev_name)
>> +{
>> +       char *name;
>> +
>> +       name = kasprintf(GFP_KERNEL, "net:%s", netdev_name);
> 
> Why the "net:" prefix in the filename?

Because I drew upon dev_change_name() method in net/core/dev.c.
The device_rename() in the above function makes use of same prefix 
related to netdev.

>>  static int setup_target_sysfs(struct netconsole_target *nt)
>>  {
>> +       int retval = 0;
>> +       char *name;
>> +
>>         kobject_set_name(&nt->obj, "port%d", nt->id);
>>         nt->obj.parent = &netconsole_miscdev.this_device->kobj;
>>         nt->obj.ktype = &target_ktype;
>> -       return kobject_register(&nt->obj);
>> +       retval = kobject_register(&nt->obj);
>> +       name = make_netdev_class_name(nt->np.dev_name);
>> +       if (!name)
>> +               return -ENOMEM;
> 
> Just call kasprintf() directly, why the obfuscation?
> 

I drew upon dev_change_name() method in net/core/dev.c.

Thanks
-- 
Keiichi KII
NEC Corporation OSS Platform Development Division
E-mail: k-keiichi@bx.jp.nec.com



  reply	other threads:[~2007-06-19 10:04 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-13 10:17 [RFC][PATCH -mm take5 0/7] proposal for dynamic configurable netconsole Keiichi KII
2007-06-13 10:25 ` [RFC][PATCH -mm take5 1/7] marking __init Keiichi KII
2007-06-13 14:34   ` Matt Mackall
2007-06-13 10:27 ` [RFC][PATCH -mm take5 2/7] support multiple logging Keiichi KII
2007-06-13 15:30   ` Satyam Sharma
2007-06-13 10:28 ` [RFC][PATCH -mm take5 3/7] add interface for netconsole using sysfs Keiichi KII
2007-06-13 15:49   ` Satyam Sharma
2007-06-19 10:03     ` Keiichi KII
2007-06-13 10:29 ` [RFC][PATCH -mm take5 4/7] using symlink for the net_device Keiichi KII
2007-06-13 16:49   ` Satyam Sharma
2007-06-13 19:03     ` Satyam Sharma
2007-06-19 10:04       ` Keiichi KII [this message]
2007-06-19 14:40         ` Satyam Sharma
2007-06-21  9:24           ` Keiichi KII
2007-06-19 10:03     ` Keiichi KII
2007-06-19 14:21       ` Satyam Sharma
2007-06-13 10:30 ` [RFC][PATCH -mm take5 5/7] switch function of netpoll Keiichi KII
2007-06-13 17:04   ` Satyam Sharma
2007-06-13 10:31 ` [RFC][PATCH -mm take5 6/7] add ioctls for adding/removing target Keiichi KII
2007-06-13 20:41   ` Satyam Sharma
2007-06-19 10:04     ` Keiichi KII
2007-06-19 15:09       ` Satyam Sharma
2007-06-21  9:24         ` Keiichi KII
2007-06-21 10:09           ` Satyam Sharma
2007-06-13 10:31 ` [RFC][PATCH -mm take5 7/7] update documentation Keiichi KII
2007-06-13 17:17   ` Satyam Sharma

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=4677AA23.1080708@bx.jp.nec.com \
    --to=k-keiichi@bx.jp.nec.com \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpm@selenic.com \
    --cc=netdev@vger.kernel.org \
    --cc=satyam.sharma@gmail.com \
    /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.