Aucbvax.5401 net.2bsd-bugs utzoo!decvax!ucbvax!dist2 Sun Dec 6 03:27:45 1981 FIX: to kernel/sys/sys/sys4.c The utime() routine is a mess. In particular, if UCB_FSFIX is undefined and an error occurs, the inode remains locked. The necessary changes are: diff kernel/sys/sys/sys4.c.old kernel/sys/sys/sys4.c 454d453 < #ifdef UCB_FSFIX 456a456 > #ifdef UCB_FSFIX 458d457 < } 460,462c459 < return; < } < iupdat(ip, &tv[0], &tv[1]); --- > iupdat(ip, &tv[0], &tv[1]); 463a461 > } This is possibly the most obscure set of diffs we've yet published, so here are the lines involved, in context: kernel/sys/sys/sys4.c.old: if (copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv))) { u.u_error = EFAULT; #ifdef UCB_FSFIX } else { ip->i_flag |= IACC|IUPD|ICHG; iupdat(ip, &tv[0], &tv[1], 0); } #else return; } iupdat(ip, &tv[0], &tv[1]); #endif iput(ip); kernel/sys/sys/sys4.c: if (copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv))) { u.u_error = EFAULT; } else { ip->i_flag |= IACC|IUPD|ICHG; #ifdef UCB_FSFIX iupdat(ip, &tv[0], &tv[1], 0); #else iupdat(ip, &tv[0], &tv[1]); #endif } iput(ip); These changes should be made to all tapes written before 12/5/81. Carl