Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site nbires.UUCP Path: utzoo!linus!vaxine!wjh12!genrad!decvax!harpo!seismo!ut-sally!nbires!mccallum From: mccallum@nbires.UUCP (Doug McCallum) Newsgroups: net.unix-wizards,net.bugs.4bsd Subject: kernel bug in flock Message-ID: <307@nbires.UUCP> Date: Mon, 9-Apr-84 13:39:54 EST Article-I.D.: nbires.307 Posted: Mon Apr 9 13:39:54 1984 Date-Received: Tue, 10-Apr-84 07:38:21 EST Organization: NBI, Boulder Lines: 44 Subject: flock panics kernel when given invalid parameter Index: sys/sys/kern_descrip.c 4.2BSD Description: The flock system call can cause the 4.2 kernel to panic when given an invalid second parameter. This occurs only when the file in question is already locked with LOCK_SH and a second call to flock where the second parameter does not contain any of (LOCK_UN|LOCK_EX|LOCK_SH) set. Repeat-By: The problem can be shown with: ... flock(fd, LOCK_SH); ... flock(fd, 0); ... Fix: The following context diff of kern_descrip.c prevents the panics: *** kern_descrip.c Mon Apr 9 08:16:14 1984 --- /sys/sys/kern_descrip.c Wed Mar 28 14:35:47 1984 *************** *** 405,414 u.u_error = EOPNOTSUPP; return; } - if ((uap->how & (LOCK_UN|LOCK_EX|LOCK_SH){ - u.u_error = EINVAL; /* ??? */ - return; - } if (uap->how & LOCK_UN) { ino_unlock(fp, FSHLOCK|FEXLOCK); return; --- 405,410 ----- u.u_error = EOPNOTSUPP; return; } if (uap->how & LOCK_UN) { ino_unlock(fp, FSHLOCK|FEXLOCK); return;