Re: kern/175674: sem_open() should use O_EXLOCK with open() inst

看板FB_bugs作者時間12年前 (2013/04/27 13:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/13 (看更多)
The following reply was made to PR kern/175674; it has been noted by GNATS. From: Giorgos Keramidas <keramida@FreeBSD.org> To: Jukka Ukkonen <jau@iki.fi> Cc: freebsd-gnats-submit@FreeBSD.org, jilles@FreeBSD.org, davidxu@FreeBSD.org Subject: Re: kern/175674: sem_open() should use O_EXLOCK with open() instead of a separate flock() call Date: Sun, 3 Feb 2013 06:25:25 +0100 On 2013-01-29 18:03, Jukka Ukkonen <jau@iki.fi> wrote: > >Number: 175674 > >Category: kern > >Synopsis: sem_open() should use O_EXLOCK with open() instead of a separate flock() call > >Environment: > FreeBSD sleipnir 9.1-STABLE FreeBSD 9.1-STABLE #2 r246056M: Tue Jan 29 07:33:01 EET 2013 root@sleipnir:/usr/obj/usr/src/sys/Sleipnir amd64 > >Description: > sem_open() is calling flock() to set a lock on a newly created file descriptor. > That is pointless. The open() call a few lines before the flock() could, and > in my opinion should, be done with the O_EXLOCK flag set. It's also a bit safer to obtain the exclusive lock atomically before open() returns. Waiting for open() to complete and then calling flock() has a race condition. Jilles and David, do you think this patch looks ok for libc? > Patch attached with submission follows: > > --- lib/libc/gen/sem_new.c.flock 2012-11-09 18:50:05.000000000 +0200 > +++ lib/libc/gen/sem_new.c 2012-11-09 18:44:59.000000000 +0200 > @@ -198,11 +198,13 @@ > goto error; > } > > - fd = _open(path, flags|O_RDWR|O_CLOEXEC, mode); > + fd = _open(path, flags|O_RDWR|O_CLOEXEC|O_EXLOCK, mode); > if (fd == -1) > goto error; > +#if 0 > if (flock(fd, LOCK_EX) == -1) > goto error; > +#endif > if (_fstat(fd, &sb)) { > flock(fd, LOCK_UN); > goto error; _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscribe@freebsd.org"
文章代碼(AID): #1HUrkHBa (FB_bugs)
討論串 (同標題文章)
完整討論串 (本文為第 4 之 13 篇):
文章代碼(AID): #1HUrkHBa (FB_bugs)