Commit Graph

456 Commits

Author SHA1 Message Date
Michael Kerrisk a28ed21cec Put flags list in alphabetcal order 2005-12-14 16:41:14 +00:00
Michael Kerrisk 145ff0249e Added cross-reference from discussion of MSG_MORE to UDP_CORK in udp(7). 2005-12-14 16:30:49 +00:00
Michael Kerrisk 711672c037 ffix 2005-12-14 11:40:27 +00:00
Michael Kerrisk ffa01655e5 Added mention of AF_INET6 address family.
Added discussion of sockaddr structure and an example in the Unix domain.
2005-12-14 11:37:28 +00:00
Michael Kerrisk cde9f44b19 Added comment noting that fork.2 refers to the example program on this
page.
2005-12-12 09:19:46 +00:00
Michael Kerrisk d7b0e083ce Added xref to pipe.2 for another example of use of fork(). 2005-12-12 09:18:35 +00:00
Michael Kerrisk 8440a332f7 Formatting fix 2005-12-09 16:37:46 +00:00
Michael Kerrisk 1fa343d1ab Added example program demonstrating use of fork() and waitpid(). 2005-12-09 16:37:05 +00:00
Michael Kerrisk 2f59b1bc3c Added pointer to example of fork() in wait.2. 2005-12-09 16:36:12 +00:00
Michael Kerrisk 15740f8afd Added example program. 2005-12-09 14:24:10 +00:00
Michael Kerrisk be37f2c558 Added SEE ALSO for new pipe.7 page 2005-12-08 18:57:25 +00:00
Michael Kerrisk eeabb34e30 The -1 error return of shmat() should be cast "(void *)". 2005-12-02 08:09:44 +00:00
Michael Kerrisk c1164764b0 Added NOTES about INFTIM contant provided on some other implementations. 2005-12-01 16:03:36 +00:00
Michael Kerrisk f6179c2fbd Formatting fix 2005-12-01 14:05:11 +00:00
Michael Kerrisk a14245c218 Add as new link to vm86.2 2005-11-30 15:24:52 +00:00
Michael Kerrisk 30ecea55d4 Changed SEE ALSO to reflect movement of sig* pages between sections. 2005-11-29 15:01:54 +00:00
Michael Kerrisk e3f86a1c91 Moved to section 3. 2005-11-29 14:58:23 +00:00
Michael Kerrisk c7dd2834b5 These pages will be replaced by a new, better sigvec.3. 2005-11-29 14:46:00 +00:00
Michael Kerrisk c625361fea Noted that si_signo is unused on Linux. 2005-11-28 16:17:54 +00:00
Michael Kerrisk 81551079f0 Added BUGS noting wrapper function problem that existed
in glibc versions <= 2.2.1.
2005-11-21 15:05:20 +00:00
Michael Kerrisk 55430ae964 Added text describing the 2.6.[0-7] EPERM bug that occurred
when sending signals to a process group.
2005-11-21 13:37:53 +00:00
Michael Kerrisk b2216ffee6 Clarified parts of the discussion of file leases,
noting effect of open(O_NONBLOCK), interruption
by signal handler, or termination by signal in lease breaker.
In response to Debian bug 339037.
2005-11-17 14:56:41 +00:00
Michael Kerrisk d3952311d4 Add EWOULDBLOCK error for file leases. 2005-11-17 14:55:31 +00:00
Michael Kerrisk 246a500fe8 Added LINUX NOTES describing nanosecond timestamps. 2005-11-17 13:36:31 +00:00
Michael Kerrisk d636589fde Added FIXME 2005-11-14 13:24:17 +00:00
Michael Kerrisk 3b3ce330e7 Added FIXME 2005-11-14 11:39:08 +00:00
Michael Kerrisk 4989c2f337 Improved description of E2BIG error: it relates to the sum
of the bytes in both environment and argument list.
2005-11-08 15:25:07 +00:00
Michael Kerrisk 64f828d585 Updated discussion about lack of prototype in glibc. 2005-11-03 14:14:09 +00:00
Michael Kerrisk bd12ab88af Formatting fixes 2005-11-03 12:47:27 +00:00
Michael Kerrisk 8478ee0279 Formatting fixes 2005-11-02 13:55:25 +00:00
Michael Kerrisk 836f07c1c3 Change things like "NULL-terminated string" to "null-terminated string" 2005-11-02 11:55:24 +00:00
Michael Kerrisk 31e9a9ec99 Change itacised function names and page xrefs to bold 2005-11-02 11:34:24 +00:00
Michael Kerrisk 9961bb4f07 Formatting fix 2005-11-02 11:06:40 +00:00
Michael Kerrisk 197889d00b Formatting fixes 2005-11-02 10:53:26 +00:00
Michael Kerrisk ac7a498150 Added some comments 2005-10-31 09:47:01 +00:00
Michael Kerrisk 6a0f26867c Reworked (cut down) discussion of capabilities, moving part of
it into capabilities.7
2005-10-28 17:40:41 +00:00
Michael Kerrisk bb40bc01bd Add text to note that setresuid() always modifies the file
system UID, and setresgid() likewise always modifies the
file system GID.
2005-10-28 16:57:37 +00:00
Michael Kerrisk ae050d9ae1 Formatting fixes 2005-10-28 13:40:41 +00:00
Michael Kerrisk 4a04cd9a4d Fix typos 2005-10-28 13:32:01 +00:00
Michael Kerrisk 62efe3ef2d Hello Andries,
Let us return to path_resolution.2...

> Von: Andries Brouwer <Andries.Brouwer@cwi.nl>
> Betreff: Re: ***UNCHECKED*** man-pages-2.11
> Datum: Mon, 24 Oct 2005 20:43:42 +0200
> 
> On Mon, Oct 24, 2005 at 05:27:56PM +0200, Michael Kerrisk wrote:
> 
> > PS I changed some text in path_rolution.2, where it seems to 
> > me that you made an error.  But I could be wrong -- you 
> > might like to double check it?
> 
> Hmm, I think it was precisely correct and no longer is.
> 
> I see some change in wording that does not actually change anything,
> and the addition of "as well" that may be incorrect.

Let's begin with a diff:

=====
--- man-pages-2.10/man2/path_resolution.2       2005-07-18 18:17:52.000000000 +0200
+++ man-pages-2.11/man2/path_resolution.2       2005-10-24 13:18:13.000000000 +0200
@@ -185,11 +185,13 @@

 Traditional systems do not use capabilities and root (user ID 0) is
 all-powerful. Such systems are presently (2.6.7) handled by giving root
-all capabilities except for CAP_SETPCAP. More precisely, at exec time
-a process gets all capabilities except CAP_SETPCAP and the five capabilities
+all capabilities except for CAP_SETPCAP. More precisely,
+a process gets all capabilities except CAP_SETPCAP
+and the five capabilities
 CAP_CHOWN, CAP_DAC_OVERRIDE, CAP_DAC_READ_SEARCH, CAP_FOWNER, CAP_FSETID,
-in case it has zero effective UID, and it gets these last five capabilities
-in case it has zero fsuid, while all other processes get no capabilities.
+if its effective UID is 0,
+and it gets these last five capabilities if its fsuid is 0 as well,
+while all other processes get no capabilities.

 The CAP_DAC_OVERRIDE capability overrides all permission checking,
 but will only grant execute permission when at least one
====

The main points of change are the following:

1. Removal of discussion of "exec time".

2. Addition of "as well".

I'll start with point 2.  I'm wrong.  I had it in my mind that 
fsuid could only be made 0 if euid was already 0.  But that isn't
true; setfsuid(x) allows us to turn this (somewhat unusual, but
theoretically possible scenario):

Real Eff Saved FS
0    y   y     y

into this (setfsuid() allows us to set the fsuid to any of the R/E/S 
UID values):

Real Eff Saved FS
0    y   y     0

And indeed the process then has the 5 CAP_FS_MASK capabilities,
in its effective set, but none of the others.

I've removed the words "as well".

On to point 1.

I removed "exec time" because it seems misleading.  As far as I can
tell, exec is not directly relevant, except in as much as we exec
a set-user-ID-root program.  The real point is that effective 
capabilities are dropped as a result of changes to the euid and 
fsuid.  Those can happen because we exec a set-user-ID-root program, 
or via manipulations via seteuid(), setfsuid(), and friends.
As such, that change still seems to me to be correct.  But 
perhaps I have still missed something that you were trying to
say.  If so, let me know.

Cheers,

Michael
2005-10-27 15:33:25 +00:00
Michael Kerrisk 3582e90689 Reworded text around PAGESIZE, noting also that
sysconf(_SC_PAGESIZE) can be used.
2005-10-27 11:14:15 +00:00
Michael Kerrisk ed978af23d Added .\" comment about SHMMNI off-by-one error in kernels 2.4.x-2.6.8. 2005-10-26 11:37:47 +00:00
Michael Kerrisk a749f870a8 s/XXX/FIXME/ 2005-10-26 11:27:52 +00:00
Michael Kerrisk f39637fad6 Minor changes 2005-10-26 11:23:22 +00:00
Michael Kerrisk eb57338fe9 Added (brief) description of SHM_HUGETLB. 2005-10-26 10:31:14 +00:00
Michael Kerrisk 75cad98162 Noted that ss_sp is automatically aligned by the kernel. 2005-10-25 15:35:08 +00:00
Michael Kerrisk b270eba946 Added EINVAL error for rlim_cur > rlim_max when calling setrlimit(). 2005-10-24 15:26:31 +00:00
Michael Kerrisk ab2e1a6c34 Repaired discussion of capabilities and file system UID, which
mistakenly had involved exec() in the discussion.
2005-10-24 11:18:13 +00:00
Michael Kerrisk 6060319831 formattinf fixes 2005-10-24 09:00:36 +00:00
Michael Kerrisk 1e32103455 Formatting fixes 2005-10-20 15:11:10 +00:00
Michael Kerrisk f87925c6bf Formatting fixes 2005-10-19 16:30:05 +00:00
Michael Kerrisk 4d52e8f81c Formatting fixes 2005-10-19 14:54:31 +00:00
Michael Kerrisk b5cc2ffbaa Formatting fixes 2005-10-19 14:48:35 +00:00
Michael Kerrisk 4a225b7a41 Formatting fixes 2005-10-19 14:16:57 +00:00
Michael Kerrisk a68b4927bf Minor wording fix 2005-10-19 13:54:51 +00:00
Michael Kerrisk d3777ff056 Formatting fix 2005-10-19 13:51:36 +00:00
Michael Kerrisk 35e21ba7ca Formatting fixes 2005-10-19 13:48:50 +00:00
Michael Kerrisk 7eda86b16c Updated FIXME 2005-10-19 13:31:49 +00:00
Michael Kerrisk 3382bd94ff Manual fixes of parentheses formatting 2005-10-19 08:35:30 +00:00
Michael Kerrisk e1d6264d9f Manual fixes for parentheses formatting 2005-10-19 07:29:28 +00:00
Michael Kerrisk 63aa9df02f Automated unformatting of parentheses using unformat_parens.sh 2005-10-19 07:07:02 +00:00
Michael Kerrisk e511ffb6bc Automated addition of parentheses by add_parens_for_own_funcs.sh 2005-10-19 06:54:38 +00:00
Michael Kerrisk a7a0588842 Further improvements to recently changed leases text 2005-10-13 09:30:54 +00:00
Michael Kerrisk 1a6d974a99 Since kernel 2.6.10, a read lease can only be placed on a
file descriptor that is opened read-only.
See the following LKML thread of Aug 2005
("fcntl(F GETLEASE) semantics??"):
http://marc.theaimsgroup.com/?l=linux-kernel&m=112371777712197&w=2
http://marc.theaimsgroup.com/?l=linux-kernel&m=112374818213000&w=2
http://marc.theaimsgroup.com/?l=linux-kernel&m=112376335305284&w=2
http://marc.theaimsgroup.com/?l=linux-kernel&m=112377294030092&w=2
2005-10-12 14:54:00 +00:00
Michael Kerrisk 9f8d688afd Added .\" comment pointing out that O_DIRECTORY | O_CREAT causes
O_DIRECTORY to be ignored
2005-10-12 10:35:09 +00:00
Michael Kerrisk 4f76dae069 Added description of MREMAP_FIXED and 'new_address' argument under NOTES.
Revised text of EINVAL error.
2005-10-11 08:24:39 +00:00
Michael Kerrisk 94604cf710 EINVAL can happen with O_DIRECT 2005-10-10 13:07:32 +00:00
Michael Kerrisk f717467217 s/int/size_t/ for type of 'size' argument (fix from Fedora man-pages-2.07-7 2005-10-04 12:39:34 +00:00
Michael Kerrisk f8ad0aeb4b Added new text for ENOMEM 2005-09-21 15:47:18 +00:00
Michael Kerrisk 314df009da fix version in .TH 2005-09-21 06:28:33 +00:00
Michael Kerrisk 9eabf77ada fix typo 2005-09-21 06:28:16 +00:00
Michael Kerrisk 614f40af1d Further reorking of RLIMIT_NICE text.
Noted 2.6.12 change in credentials checking for setpriority().
2005-09-20 17:45:12 +00:00
Michael Kerrisk cedd678ff7 Further reworking of discussion or RLIMIT_NICE and RLIMIT_RTPRIO 2005-09-20 17:43:58 +00:00
Michael Kerrisk 8ba10b3e91 Added cross-reference to setrlimit(2) for discussion on RLIMIT_NICE. 2005-09-20 17:42:39 +00:00
Michael Kerrisk afdee10dbc Further reworking of text on privileges and RLIMIT_RTPRIO 2005-09-20 14:52:34 +00:00
Michael Kerrisk 6151ea9a91 Noted 2.6.12 off-by-one error for RLIMIT_NICE. 2005-09-20 06:52:49 +00:00
Michael Kerrisk 23b1b9bc40 Uncommented text that I wrote earlier that added mention of RLIMIT_NICE
and a cross reference to getrlimit.2 under the description of the EACCES 
error.
2005-09-19 14:57:58 +00:00
Michael Kerrisk a23bf8a396 Uncommented description of RLIMIT_NICE that I wrote earlier 2005-09-19 14:57:05 +00:00
Michael Kerrisk 58d323a7f7 Formatting fix 2005-09-19 12:18:57 +00:00
Michael Kerrisk b327744384 Wording improvements to new dumpable text 2005-09-16 15:36:12 +00:00
Michael Kerrisk c0dc044574 Since kernel 2.6.13 PR_SET_DUMPABLE can also have the value 2. 2005-09-16 14:05:39 +00:00
Michael Kerrisk 1b6145807d fix typo in version number 2005-09-15 12:29:07 +00:00
Michael Kerrisk 1176900f3e formatting fix 2005-09-15 12:06:26 +00:00
Michael Kerrisk 924dca35fe New page created by splitting out from sigaction.2
Added NOTES on usage.
Added new text to DESCRIPTION.
Changed CONFORMING TO.
2005-09-15 11:50:30 +00:00
Michael Kerrisk 7ff599e2ac New page created by splitting out from sigaction.2
Added text on effect of NULL for 'set' argument.
Added text noting effect of ignoring SIGBUS, SIGFPE, SIGILL,
       and SIGSEGV.
Noted that sigprocmask() can't be used in multithreaded process.
Fixed EINVAL error diagnostic.
Changed CONFORMING TO.
2005-09-15 11:48:46 +00:00
Michael Kerrisk bfac9793eb New page created by splitting out from sigaction.2
Changed CONFORMING TO.
2005-09-15 11:48:01 +00:00
Michael Kerrisk 00161f1ba6 Split sigpending(), sigprocmask(), and sigsuspend() out
into separate new pages.

Other minor changes

NOTES: described SA_NODER / sa_mask bug which was present in
                all kernels up to and including 2.6.13.
See http://marc.theaimsgroup.com/?l=linux-kernel&m=112360948603171&w=2
and http://marc.theaimsgroup.com/?l=linux-kernel&m=112362164911432&w=2
List:       linux-kernel
Subject:    Signal handling possibly wrong
From:       Bodo Stroesser
Date:       2005-08-09 17:44:06
2005-09-15 11:47:39 +00:00
Michael Kerrisk b469222561 Added SEE ALSO for sigsuspend.2
Some formatting fixes.
2005-09-15 11:46:02 +00:00
Michael Kerrisk 479377fb38 Updated SEE ALSO to reflect splitting of sigaction.2 into
sigaction.2, sigsuspend.2, sigpending.2, sigprocmask.2
2005-09-15 09:20:05 +00:00
Michael Kerrisk 22b6a68b91 Added text to note that start and size are both rounded downwards. 2005-09-14 13:51:30 +00:00
Michael Kerrisk d2243fd63e Minor change to FIXME 2005-09-14 08:16:03 +00:00
Michael Kerrisk dbc53ca8b2 Noted bug in MAP_POPULATE for kernels before 2.6.7. 2005-09-14 08:15:27 +00:00
Michael Kerrisk ceb6743d1f Added _GNU_SOURCE to prototype.
Rewrote description of MREMAP_MAYMOVE.
Rewrote description of EAGAIN error.
Added discussion of resizing of memory locks.
Added entries to SEE ALSO.
Some formatting fixes.
2005-09-13 10:27:22 +00:00
Michael Kerrisk f55c92c489 Fix small error in description of CLONE_PARENT_SETTID 2005-08-16 15:13:39 +00:00
Michael Kerrisk 96296ef0fa nfds should be prototyped as nfds_t; as per Debian bug 322934
Some wording and formatting improvements.
2005-08-16 08:46:16 +00:00
Michael Kerrisk 8a1dd51447 Added LINUX NOTES on trickery performed by glibc when vector size
exceeds IOV_MAX.
Formatting clean-ups.
2005-08-09 17:32:16 +00:00
Michael Kerrisk 18bc490536 fix typo 2005-08-02 12:12:52 +00:00
Michael Kerrisk 79dded64b7 Added IPC_INFO, SHM_INFO, SHM_STAT descriptions. 2005-08-02 12:09:50 +00:00
Michael Kerrisk 24ed820aca Added IPC_INFO, SEM_INFO, SEM_STAT descriptions. 2005-08-02 12:09:40 +00:00
Michael Kerrisk f302169769 Added IPC_INFO, MSG_INFO, MSG_STAT descriptions. 2005-08-02 12:09:28 +00:00
Michael Kerrisk 5e1f91cfd1 Commented out RLIMIT_NICE text, pending the fix to align
the 2.6.12 mismatch between [gs]etpriority() and RLIMIT_NICE.
See: http://marc.theaimsgroup.com/?l=linux-kernel&m=112256338703880&w=2
2005-07-29 11:44:53 +00:00
Michael Kerrisk 1bf844f164 Added RLIMIT_RTPRIO and RLIMIT_NICE 2005-07-28 14:38:36 +00:00
Michael Kerrisk fd04afa828 Modified discussion of privileges; added mention of RLIMIT_RTPRIO 2005-07-28 14:37:51 +00:00
Michael Kerrisk 0fdbc1eb4a Modified discussion of privileges; added pointer to sched_setscheduler.2 for a discussion of privilegs and resource limits. 2005-07-28 14:36:53 +00:00
Michael Kerrisk 4c11163972 spelling fix 2005-07-28 14:29:14 +00:00
Michael Kerrisk d818502d25 Expanded discussion of relationship between user and kernel
representations of the nice value.
Added mention of RLIMIT_NICE and a cross reference to getrlimit.2 
under the description of the EACCES error.
2005-07-28 13:21:39 +00:00
Michael Kerrisk 7d5b6eb812 Added sentence noting that range of nice value is described in getpriority.2 2005-07-28 12:33:20 +00:00
Michael Kerrisk 7dc020ccf4 Clarified the order of value and port arguments;
As per Debian bug 263756
2005-07-25 11:45:25 +00:00
Michael Kerrisk 998c7b3d5b Add to prototype: define _POSIX_C_SOURCE 199309
As per Debian bug 314435
2005-07-25 11:33:22 +00:00
Michael Kerrisk 6ca594c529 Add EINTR error
See http://lkml.org/lkml/2005/7/12/254
2005-07-25 11:22:58 +00:00
Michael Kerrisk 29de83af2a Fix typo 2005-07-25 09:55:44 +00:00
Michael Kerrisk 331da7c3a0 RFC references are now always writen as "RFC\ nnn" (not "RFC nnn" or
"RFCnnn").
2005-07-20 07:50:45 +00:00
Michael Kerrisk 14ee3bff41 Formatting fixes 2005-07-19 15:38:39 +00:00
Michael Kerrisk a5e0a0e427 Formatting fixes. 2005-07-19 15:36:19 +00:00
Michael Kerrisk 32f3001571 Improve st_blocks description. 2005-07-19 14:20:38 +00:00
Michael Kerrisk 310b79194a Consistent use of st_atime, st_ctime, st_mtime, with explanatory text,
instead if atime/ctime/mtime.
2005-07-19 07:15:17 +00:00
Michael Kerrisk e360c3a9cf s/pid/PID/ 2005-07-19 06:32:54 +00:00
Michael Kerrisk 1aa1268f29 s/super user/superuser/ 2005-07-18 17:13:06 +00:00
Michael Kerrisk 1e568304e5 s/file pointer/file offset/ 2005-07-18 17:10:25 +00:00
Michael Kerrisk d9df8ff80a Consistent use of "saved set-user-ID" and "saved set-group-ID". 2005-07-18 16:55:22 +00:00
Michael Kerrisk b5a5add044 euid-> effective UID 2005-07-18 16:17:52 +00:00
Michael Kerrisk 499d62f2a6 s/\\-ID/ ID/ 2005-07-18 16:13:49 +00:00
Michael Kerrisk c7400a2caf set-(group|user)-ID fixes 2005-07-18 16:09:29 +00:00
Michael Kerrisk 357cf3fe97 id --> ID 2005-07-18 16:02:32 +00:00
Michael Kerrisk e75a454257 gid --> GID 2005-07-18 15:54:49 +00:00
Michael Kerrisk fdc196f51f uid --> UID 2005-07-18 15:51:22 +00:00
Michael Kerrisk b14d4aa5b8 Classical BSD versions are now always named x.yBSD (formerly
there was a mix of x.yBSD and BSD x.y).
2005-07-18 15:05:56 +00:00
Michael Kerrisk 880f5b4bc3 Consistent use of "set-user-ID" and "set-group-ID". 2005-07-18 14:25:42 +00:00
Michael Kerrisk da2d9dad4e Improve st_dev and st_rdev descriptions; other wording and formatting
improvements.
2005-07-18 13:54:59 +00:00
Michael Kerrisk df8a3cac32 hyphen/dash fixes 2005-07-18 12:43:00 +00:00
Michael Kerrisk 9426c9ddbf RLIMIT_RSS ceased to have any effect in 2.4 in kernel 2.4.30.
(It already didn't have any effect in 2.2.x and 2.6.x.)
2005-07-13 13:05:56 +00:00
Michael Kerrisk 9d8b1d5f55 Documented RLIMIT_MSGQUEUE limit.
s/MADVISE_WILLNEED/MADV_WILLNEED/
2005-07-13 12:51:27 +00:00
Michael Kerrisk 3e4d52e15f Added BUG: in some circumstances, a process that is
waiting for a semaphore to become zero is not not woken
up when the value does actually reach zero.
http://marc.theaimsgroup.com/?l=linux-kernel&m=110260821123863&w=2
http://marc.theaimsgroup.com/?l=linux-kernel&m=110261701025794&w=2
2005-07-12 10:25:16 +00:00
Michael Kerrisk 8c383102d0 hyphen/dash fixes 2005-07-07 08:27:03 +00:00
Michael Kerrisk 2bc2f4798f hyphen/dash fixes 2005-07-06 12:57:38 +00:00
Michael Kerrisk 84d60f7955 s/can can/can/ 2005-07-06 11:23:52 +00:00
Michael Kerrisk fba59d25ec Eliminate consecutive duplicate words 2005-07-06 11:21:27 +00:00
Michael Kerrisk e9496f74fa Hyphen/dash fixes 2005-07-06 06:54:27 +00:00
Michael Kerrisk bed66765fa Formatting fixes 2005-07-06 06:52:35 +00:00
Michael Kerrisk 4c8a01a695 This has never been a 'real' syscall on any Unix. 2005-07-05 15:29:29 +00:00
Michael Kerrisk 8c45053412 s/the the/the/ 2005-07-05 13:50:51 +00:00
Michael Kerrisk b97a922231 s/positive/non-negative/ [file descriptor] 2005-07-04 06:47:34 +00:00
Michael Kerrisk 4041a5abf1 Von: "Michael Kerrisk" <mtk-manpages@gmx.net>
An: Olivier Croquette <ocroquette@free.fr>
Betreff: Re: 2.6.12 and setitimer
Datum: Mon, 4 Jul 2005 08:36:35 +0200 (MEST)

Hi Olivier,

> You will probably consider adding also a note to point out that the bug 
> will stay a known bug of the 2.4 serie:
> 
> http://lkml.org/lkml/2005/7/1/165

First off, I _very_ much appreciate the fact that you keep 
informing me of the progress of this bug!  Thank you.

At the moment, I'm inlined yo leave the manual page as it is.
It currently reads:

       On certain systems (including x86), Linux ker&#8208;
       nels  before  version  2.6.12 have a bug which
       will produce premature timer expirations of up
       to  one  jiffy under some circumstances.  This
       bug is fixed in kernel 2.6.12.

To me that implies that the bug also affects kernels before 
2.4 -- e.g., 2.4.x.  Now, what would be interesting is if the
bug *does* get fixed in 2.4, then I could also add a note 
about the 2.4.x version where it is fixed.

In the meantime, I have added a note to myself (i.e., a comment
in the man page source) about this point.

If the bug *does* eventually get fixed in 2.4.x, and you 
hear of it, please do let me know.

Thanks,

Michael
2005-07-04 06:44:50 +00:00
Michael Kerrisk 3e6b03a02b Renamed 's' arg to 'sockfd' 2005-06-30 10:32:41 +00:00
Michael Kerrisk 44d4d09df6 Various wording and formatting fixes. 2005-06-30 10:29:56 +00:00
Michael Kerrisk ae1a9ff438 Various wording and formatting fixes. 2005-06-30 10:16:11 +00:00
Michael Kerrisk 884dda7b87 Removed historic comment on BSD backlog ceiling.
Minor formatting changes.
2005-06-30 09:44:14 +00:00
Michael Kerrisk 85a3dc20db Added SEE ALSO for shutdown(2) 2005-06-30 09:40:35 +00:00
Michael Kerrisk a089ce72bb Minor formatting changes 2005-06-30 09:36:24 +00:00
Michael Kerrisk 0680fbb0e8 Various minor wording changes 2005-06-30 09:31:55 +00:00
Michael Kerrisk 0e5b601a02 Added getaddrinfo(3) to SEE ALSO 2005-06-30 09:31:11 +00:00
Michael Kerrisk edcc65ff8a Various minor wording improvements; some formatting fixes 2005-06-30 08:58:03 +00:00
Michael Kerrisk d1fd6d3d74 Added mkdir(2) to discussion, made term "file mode creation mask" clearer.
Various, mostly small, wording changes
2005-06-30 08:07:33 +00:00
Michael Kerrisk a6a99a4c8c wording fix 2005-06-29 09:19:41 +00:00
Michael Kerrisk 2c4bff3681 Various further wording changes related to open file description, etc. 2005-06-27 15:35:32 +00:00
Michael Kerrisk 0847872439 Minor wording changes 2005-06-27 14:42:40 +00:00
Michael Kerrisk cb1a9e12d2 one word change 2005-06-27 14:42:14 +00:00
Michael Kerrisk 98740ac7a7 Formatting changes 2005-06-24 10:53:06 +00:00
Michael Kerrisk 94dd7e3bd7 White space fix 2005-06-23 15:27:41 +00:00
Michael Kerrisk 2985d7dd81 Slight rewording 2005-06-23 15:27:21 +00:00
Michael Kerrisk 9e16036151 Remove confusing text describe real and effective IDs.
As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=285852
2005-06-23 14:56:40 +00:00
Michael Kerrisk fefaf5f952 whitespace cleanups 2005-06-23 13:40:38 +00:00
Michael Kerrisk 7f185ad2cb Noted that the nice value rande is -20..20 on some systems 2005-06-23 13:36:09 +00:00
Michael Kerrisk ee6573b952 Changed range documented in main text from -20..20 to -20..19. 2005-06-23 13:33:14 +00:00
Michael Kerrisk 24b1a0121f Added .\" comment about behaviour change for
length == 0 in kernel 2.6.12.
2005-06-23 12:11:22 +00:00
Michael Kerrisk 18f2ce4067 Reversed 2.04 introduction of the term "process termination function". 2005-06-23 09:45:21 +00:00
Michael Kerrisk 7704d9671e The short sleep bug (up to 1 jiffy) that was newly noted in
man-pages-2.04 has just been fixed in 2.6.12.
2005-06-23 07:16:55 +00:00
Michael Kerrisk 72da38ce1d Minor wording changes 2005-06-22 10:59:21 +00:00
Michael Kerrisk 1864073923 Added FIXME 2005-06-22 10:56:11 +00:00
Michael Kerrisk 082aa7841d Clarified what type of lock close() affects.
Minor formatting changes.
2005-06-22 10:49:19 +00:00
Michael Kerrisk cff88e99ab Consistent use of terms "open file description",
"file status flags", and "file decriptor flags"
Some rewriting of discussion of file descriptor flags
Under F_DUPFD, replaced some text duplicated in dup.2 with a cross ref to dup.2
Minor wording and formatting fixes
2005-06-22 09:53:58 +00:00
Michael Kerrisk 0a5a85eb64 Consistent use of terms "open file description",
"file status flags", and "file decriptor flags"
Removed mention of lock sharing -- it was not accurate.
Minor formatting fixes
2005-06-22 09:53:00 +00:00
Michael Kerrisk e366dbc4fb Clarification of term "open file description" along with
explanation of what information it maintains.
Various minor wording changes
2005-06-22 09:52:33 +00:00
Michael Kerrisk 5ae873ff97 Formatting changes 2005-06-22 08:16:22 +00:00
Michael Kerrisk 42eda4aea7 Minor wording changes (after email with AEB). 2005-06-22 06:52:22 +00:00
Michael Kerrisk d04e1109b9 Clarified semantics of relationship between flock() locks
and open file entries and file descriptors.
See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=291121
2005-06-21 14:43:56 +00:00
Michael Kerrisk fb654466a6 Minor changes 2005-06-21 13:50:30 +00:00
Michael Kerrisk 1f6ceb400b O_DIRECT needs _GNU_SOURCE.
O_ASYNC works for pipes and FIFOs in Linux 2.6
Vaious minor fixes
2005-06-21 10:04:56 +00:00
Michael Kerrisk dd61d68cc4 Since Linux 2.6, the ru_nvcsw and ru_nivcsw fields are used. 2005-06-20 08:58:09 +00:00
Michael Kerrisk 019934ed21 BUGS: In kernels < 2.6.9, EPOLL_CTL_DEL required a non-NULL
'event', even though this argument is ignored.
As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=306517.
2005-06-17 11:33:07 +00:00
Michael Kerrisk 2a01941630 Rewrote description of return value.
As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=296183
2005-06-16 15:07:57 +00:00
Michael Kerrisk adb036712f removed fixed FIXMEs 2005-06-16 10:35:03 +00:00
Michael Kerrisk 4a3f7c5fbc formatting 2005-06-16 10:32:30 +00:00
Michael Kerrisk 8729177b44 global edit s/ -1/ \\-1/g 2005-06-15 14:10:23 +00:00
Michael Kerrisk f59a3f1941 Global edit: s/nonzero/non-zero/ 2005-06-15 13:32:34 +00:00
Michael Kerrisk 2e0eee5451 RLIMIT_RSS only has affect "in 2.4.x", not "in 2.4 and later". 2005-06-15 11:35:49 +00:00
Michael Kerrisk 7b57506d6d Various minor changes 2005-06-14 11:20:57 +00:00
Michael Kerrisk c13fcab060 Salut Olivier (and Nishanth),
Regarding man page documentation of the problem of short sleeps 
for setiteimer(2)...

> > -- pointers to those threads
> 
> http://bugzilla.kernel.org/show_bug.cgi?id=4569
> http://lkml.org/lkml/2005/4/29/163
> 
> > -- indications of which kernel versions show this bahaviour
> 
> AFAIK, all versions as far as x86 is concerned.
> Dunno if it is hardware specific.
> 
> > -- a (short) test program to demonstrate it, if you have one.
> 
> See the bugzilla bug's attachments

Sorry for the long delay in following this up, but I've got to 
it now.  I tweaked your suggestions slightly:

{{
Timers will never expire before the requested time,
-instead expiring some short, constant time afterwards, dependent
-on the system timer resolution (currently 10ms).  
+but may expire some (short) time afterwards, which depends
+on the system timer resolution and on the system load.
+Upon expiration, a signal will be generated and the timer reset.
+If the timer expires while the process is active (always true for

+On certain systems (including x86), the Linux kernel has a bug which will
+produce premature timer expirations of up to one jiffy under some
+circumstances.
}}

Thanks for this bug reporet,

Nishanth: if and when your changes are accepted, and the problem 
is thus fixed, could you please send me a notification of that
fact, and I can then further amend the manual pages.

Cheers,

Michael



/* itimer_short_interval_bug.c 

   June 2005

   In current Linux kernels, an interval timer set using setitimer() 
   can sometimes sleep *less* than the specified interval.
   This program demonstrates the behaviour by looping through all
   itimer values from 1 microsecond upwards, in one microsecond steps.
*/
/* Adapted from a program by Olivier Croquette, June 2005 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/wait.h>



typedef unsigned long long int u_time_t; /* in microsecs */

static int handler_flag;

/* return time as a number of microsecs  */

static u_time_t 
gettime(void ) 
{
    struct timeval tv;

    if ( gettimeofday(&tv, NULL) == -1) {
        perror("gettimeofday()");
        return 0;
    }
    return (tv.tv_usec + tv.tv_sec * 1000000LL);
}


static void 
handler (int sig, siginfo_t *siginfo, void *context) 
{
    handler_flag++;
    return ;
}


/* Sleep for 'time' microsecs. */
static int 
isleep(u_time_t time) 
{
    struct itimerval  newtv;
    sigset_t sigset;
    struct sigaction  sigact;

    if (time == 0)
        return 0;

    /* block SIGALRM */
    sigemptyset (&sigset);
    sigaddset (&sigset, SIGALRM);
    sigprocmask (SIG_BLOCK, &sigset, NULL);

    /* set up our handler */
    sigact.sa_sigaction  = handler;
    sigemptyset(&sigact.sa_mask);
    sigact.sa_flags = SA_SIGINFO;
    sigaction (SIGALRM, &sigact, NULL);
 
    newtv.it_interval.tv_sec  = 0;
    newtv.it_interval.tv_usec = 0;
    newtv.it_value.tv_sec     = time / 1000000;
    newtv.it_value.tv_usec    = time % 1000000;
    if (setitimer(ITIMER_REAL,&newtv,NULL) == -1) {
        perror("setitimer(set)");
        return 1;
    }

    sigemptyset (&sigset);
    sigsuspend (&sigset);
    return 0;
}


int 
main(int argc, char *argv[]) {
    u_time_t wait;
    int loop, numLoops;
    u_time_t t1, t2;
    u_time_t actual;
    long long minDiff, maxDiff, totDiff, diff;
    int numFail = 0;

    if (argc != 2) {
	fprintf(stderr, "Usage: %s num-loops\n", argv[0]);
	exit(EXIT_FAILURE);
    } /* if */

    numLoops = atoi(argv[1]);
    setbuf(stdout, NULL);

    for (wait = 1; ; wait++) {
	maxDiff = 0;
	numFail = 0;
	totDiff = 0;
	minDiff = -wait;

        if (wait % 10000 == 0)
	    printf("%llu\n", wait);
        
	for (loop = 0; loop < numLoops; loop++) {
            t1 = gettime();

            handler_flag = 0;
            isleep(wait);
	    
	    if ( handler_flag != 1 ) 
                printf("Problem with the handler flag (%d)!\n", handler_flag);
    
            t2 = gettime();
            actual = t2 - t1;
            if ( actual < wait ) {
	        diff = actual - wait;
		if (diff < maxDiff)
		    maxDiff = diff;
		if (diff > minDiff)
		    minDiff = diff;
		totDiff += diff;
		numFail++;
	    } /* if */

        } /* for */
	if (numFail > 0) 
            printf("%llu: %3d fail (%4lld %4lld; avg=%6.1f)\n", 
		    wait, numFail, minDiff, maxDiff, 
		    (double) totDiff / numFail);
    } /* for */

    return 0;
} /* main */
2005-06-13 09:01:49 +00:00
Michael Kerrisk 561aa928db Remove duplicated CLONE_VFORK text 2005-06-13 06:09:43 +00:00
Michael Kerrisk 6e2d1c54dd Formatting fix 2005-06-09 07:12:30 +00:00
Michael Kerrisk 3616b7c0cf New pthreads.7 page 2005-06-07 12:35:32 +00:00
Michael Kerrisk de7639e575 Updated copyright date 2005-06-02 12:52:15 +00:00
Michael Kerrisk f7110f6014 Noted that any thread in a thread group can wait for a child
that one of them creates using fork().
2005-06-02 10:22:34 +00:00
Michael Kerrisk 6aacaf94e5 Hi Andries,
> The question came up whether execve of a suid binary while being ptraced
> would fail or ignore the suid part. The answer today seems to be the
> latter:
> 
> E.g. (in 2.6.11) security/dummy.c:
> 
> static void dummy_bprm_apply_creds (struct linux_binprm *bprm, int 
> unsafe)
> {
>         if (bprm->e_uid != current->uid || bprm->e_gid != current->gid) {
>                 if ((unsafe & ~LSM_UNSAFE_PTRACE_CAP) &&
> !capable(CAP_SETUID)) {
>                         bprm->e_uid = current->uid;
>                         bprm->e_gid = current->gid;
>                 }
>         }
> }
> 
> and fs/exec.c:
> 
> void compute_creds(struct linux_binprm *bprm) {
>         int unsafe;
> 
>         unsafe = unsafe_exec(current);
>         security_bprm_apply_creds(bprm, unsafe);
> }
> 
> static inline int unsafe_exec(struct task_struct *p) {
>         int unsafe = 0;
>         if (p->ptrace & PT_PTRACED) {
>                 if (p->ptrace & PT_PTRACE_CAP)
>                         unsafe |= LSM_UNSAFE_PTRACE_CAP;
>                 else
>                         unsafe |= LSM_UNSAFE_PTRACE;
>         }
>         return unsafe;
> }
> 
> That is: if the process that calls execve() is being traced,
> the LSM_UNSAFE_PTRACE bit is et in unsafe and security_bprm_apply_creds()
> will make sure the suid/sgid bits are ignored.
> 
> ---
> 
> In my man page I do not read anything like that. It says
> 
>  EPERM  The process is being traced, the user is not the  superuser and
>         the file has an SUID or SGID bit set.
> and
> 
>  If  the current program is being ptraced, a SIGTRAP is sent to it after
>  a successful execve().
> 
>  If the set-uid bit is set on the program file pointed  to  by filename
>  the  effective user ID of the calling process is changed to that of the
>  owner of the program file.
> 
> So, maybe this sentence should be amended to read
> 
>  If the set-uid bit is set on the program file pointed  to  by filename
>  and the current process is not being ptraced, the  effective user ID
>  of the calling process is changed to ...

I changed your "current" to "calling" (to be consistent with the 
rest of the page), but otherwise applied as you suggest.

The revision will appear in man-pages-2.03, which I can release
any time now.  Are you avialable to do an upload tomorrow?
2005-05-31 16:07:24 +00:00
Michael Kerrisk 5e4e13a313 SEE ALSO s/threads/pthreads 2005-05-30 16:47:35 +00:00
Michael Kerrisk 2202881e83 Noted changes in permissions required for SHM_LOCK/SHM_UNLOCK. 2005-05-30 11:58:06 +00:00
Michael Kerrisk 9d2a7b1f62 Noted F_SETOWN bug for socket file descriptor in Linux 2.4 and earlier.
Added text on permissions required to send signal to owner.

====

Hello Johannes,

> Betreff: Inaccuracy of fcntl man page
> Datum: Mon, 2 May 2005 20:07:12 +0200

Thanks for yor note.

Sorry for the delay in getting back to you.  I needed to find time 
to set aside to look at the details.  Now I've finally got there.

> I have attached a simple program 

Thanks -- a little program is always helpful.

> that uses the fcntl system call in order
> to kill an arbitrary process of the same user.
> According to the fcntl man page, fcntl(fd,F_SETOWN,pid) returns zero if 
> it has success.

Yes.

> If you strace the program while killing for exampe man running in another 
> terminal, you will see that man is killed, but fcntl(fd,F_SETOWN,pid)
> will return EPERM, 

I confirm that I see this problem in 2.4, with both Unix domain 
and Internet domain sockets.

> where you can only find a very confusing explanation 
> in the fcntl man page.

I'm not sure what explanation you mean here.  As far as I can 
tell, the manual page just doesn't cover this point.

> I have looked into the kernel source of 2.4.30 and found out, that 
> net/core/socket::sock_no_fcntl is the culprit if you use fcntl on Unix 
> sockets.

Yes, looks that way to me, as well,  And the 2.2 code looks 
similar.

> If pid is not your own pid or not your own process group, 
> the system call will return EPERM but will also set the pid 
> as you wanted to.

Yes.

> In the 2.6 kernel line, fcntl will react according the specification in
> the manual page.

Yes.

> If you also think, that one should clarify the return specification of 
> fcntl(fd,F_SETOWN,pid) or 2.4.x kernels, please tell me and I will 
> provide you with a patch for the manual page.

In fact I've written some new text under BUGS, which describes
the problem:

  In Linux 2.4 and earlier, there is bug that can occur  when  an
  unprivileged  process  uses  F_SETOWN to specify the owner of a
  socket file descriptor as a  process  (group)  other  than  the
  caller.   In this case, fcntl() can return -1 with errno set to
  EPERM, even when the owner process  (group)  is  one  that  the
  caller  has  permission to send signals to.  Despite this error
  return, the file descriptor owner is set, and signals  will  be
  sent to the owner.

Does that seem okay to you?

> Furthermore, it would be interseting to write there, what permissions 
> one need in order to send signals to processes via fcntl 

Good idea.  I added the following new text:

  Sending a signal to  the  owner  process  (group)  specified  by
  F_SETOWN  is  subject  to  the  same  permissions  checks as are
  described for kill(2), where the sending process is the one that
  employs F_SETOWN (but see BUGS below).

====


#define _GNU_SOURCE		/* needed to get the defines */
#include <fcntl.h>		/* in glibc 2.2 this has the needed
				   values defined */
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>


/**
 * Funnykill kills a program with fcntl
**/
int
main (int argc, char **argv)
{
  if (argc != 2)
    {
      fprintf (stderr, "Usage: funnykill <pid>\n");
      return 1;
    }

  int sockets[2];
  socketpair (AF_UNIX, SOCK_STREAM, 0, sockets);
  if (fcntl (sockets[0], F_SETFL, O_ASYNC | O_NONBLOCK) == -1) 
      errMsg("fcntl-F_SETFL");
  if (fcntl (sockets[0], F_SETOWN, atoi (argv[1])) == -1) 
      errMsg("fcntl-F_SETOWN");
//  fcntl (sockets[0], F_SETOWN, getpid());
  if (fcntl (sockets[0], F_SETSIG, SIGKILL) == -1) 
      errMsg("fcntl-_FSETSIG");
  write (sockets[1], "good bye", 9);
}
2005-05-20 12:11:25 +00:00
Michael Kerrisk 80ca8aba1d Added EAGAIN error description for umount2(). 2005-05-18 14:42:07 +00:00
Michael Kerrisk 8df37e4d66 Added MNT_EXPIRE, plus a few other tidy-ups. 2005-05-18 14:34:43 +00:00
Michael Kerrisk 6e5a730913 Added comment:
.\" For Unix domain sockets and regular files, EPERM is only returned in
.\" Linux 2.2 and earlier; in Linux 2.4 and later, unprivileged can
.\" use mknod() to make these files.
2005-05-18 09:39:52 +00:00