svn commit: r344555 - head/usr.sbin/makefs

Maxim Sobolev sobomax at FreeBSD.org
Mon Feb 25 23:45:37 UTC 2019


Author: sobomax
Date: Mon Feb 25 23:45:36 2019
New Revision: 344555
URL: https://svnweb.freebsd.org/changeset/base/344555

Log:
  Improve error handling: bail out if one of the files scheduled
  to go to the FS image we are making cannot be read (e.g. EPERM).
  Current behaviour when we issue waring but still proceeed and
  return success is definitely not correct: masking out error
  condition as well as making a slighly inconsistent FS where
  attempt to access the file in question ends up in EBADF. See
  linked DR for details.
  
  MFC after:	1 month
  Differential Revision:	https://reviews.freebsd.org/D18584

Modified:
  head/usr.sbin/makefs/ffs.c

Modified: head/usr.sbin/makefs/ffs.c
==============================================================================
--- head/usr.sbin/makefs/ffs.c	Mon Feb 25 22:11:44 2019	(r344554)
+++ head/usr.sbin/makefs/ffs.c	Mon Feb 25 23:45:36 2019	(r344555)
@@ -932,8 +932,7 @@ ffs_write_file(union dinode *din, uint32_t ino, void *
 	if (isfile) {
 		fbuf = emalloc(ffs_opts->bsize);
 		if ((ffd = open((char *)buf, O_RDONLY, 0444)) == -1) {
-			warn("Can't open `%s' for reading", (char *)buf);
-			goto leave_ffs_write_file;
+			err(EXIT_FAILURE, "Can't open `%s' for reading", (char *)buf);
 		}
 	} else {
 		p = buf;
@@ -987,8 +986,6 @@ ffs_write_file(union dinode *din, uint32_t ino, void *
   
  write_inode_and_leave:
 	ffs_write_inode(&in.i_din, in.i_number, fsopts);
-
- leave_ffs_write_file:
 	if (fbuf)
 		free(fbuf);
 	if (ffd != -1)


More information about the svn-src-head mailing list