FIX: to kernel/sys/sys/sys4.c

utzoo!decvax!ucbvax!dist2 utzoo!decvax!ucbvax!dist2
Sun Dec 6 03:27:45 AEST 1981


	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



More information about the Comp.bugs.2bsd mailing list