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!watmath!clyde!floyd!harpo!seismo!ut-sally!nbires!mccallum From: mccallum@nbires.UUCP (Doug McCallum) Newsgroups: net.unix-wizards,net.bugs.4bsd Subject: Re: kernel bug in flock Message-ID: <312@nbires.UUCP> Date: Thu, 12-Apr-84 16:02:57 EST Article-I.D.: nbires.312 Posted: Thu Apr 12 16:02:57 1984 Date-Received: Fri, 13-Apr-84 21:02:11 EST References: <307@nbires.UUCP> Organization: NBI, Boulder Lines: 49 There was a major bug in my last fix. The typo should have given a clue. The following is the correct bug report: 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)) == 0){ - 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; ---------- Doug McCallum {ucbvax,allegra,amd70,hao}!nbires!mccallum