Messages in this thread | | | Date | Fri, 1 Jun 2007 09:48:21 +0200 | From | Matthias Kaehlcke <> | Subject | Re: [PATCH] use mutex instead of semaphore in tty_io.c |
| |
El Thu, May 31, 2007 at 03:37:12PM -0700 Andrew Morton ha dit:
> On Thu, 31 May 2007 15:42:26 +0200 > Matthias Kaehlcke <matthias.kaehlcke@gmail.com> wrote: > > > drivers/char/tty_io.c: Use spinlock instead of a (binary) semaphore > > > > hm. > > > > > We end up with this: > > /* find a device that is not in use. */ > if (!idr_pre_get(&allocated_ptys, GFP_KERNEL)) > return -ENOMEM; > > spin_lock(&allocated_ptys_lock); > > idr_ret = idr_get_new(&allocated_ptys, NULL, &index); > if (idr_ret < 0) { > spin_unlock(&allocated_ptys_lock); > if (idr_ret == -EAGAIN) > return -ENOMEM; > return -EIO; > } > if (index >= pty_limit) { > idr_remove(&allocated_ptys, index); > spin_unlock(&allocated_ptys_lock); > return -EIO; > } > spin_unlock(&allocated_ptys_lock); > > this leaves a small window in which another thread can come in and steal > away the idr tree's reserves, causing the idr_get_new() to fail. It's > highly improbable, but it's real.
i agree, thanks for pointing it out
> Hence I think a straight semaphore->mutex conversion would be better.
that leads us back to the initial patch. christoph: is that ok for you or do you have another proposal?
-- Matthias Kaehlcke Linux Application Developer Barcelona
The assumption that what currently exists must necessarily exist is the acid that corrodes all visionary thinking .''`. using free software / Debian GNU/Linux | http://debian.org : :' : `. `'` gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |