Author: mckusick
Date: Tue Jun 23 21:28:26 2020
New Revision: 362559
URL: https://svnweb.freebsd.org/changeset/base/362559

Log:
  The libufs library needs to track and free the new fs_si structure
  in addition to the fs_csp structure that it references.
  
  PR:           247425
  Sponsored by: Netflix

Modified:
  head/lib/libufs/libufs.h
  head/lib/libufs/sblock.c
  head/lib/libufs/type.c
  head/sbin/fsck_ffs/setup.c

Modified: head/lib/libufs/libufs.h
==============================================================================
--- head/lib/libufs/libufs.h    Tue Jun 23 21:17:13 2020        (r362558)
+++ head/lib/libufs/libufs.h    Tue Jun 23 21:28:26 2020        (r362559)
@@ -49,7 +49,7 @@ struct uufsd {
        int d_fd;                       /* raw device file descriptor */
        long d_bsize;                   /* device bsize */
        ufs2_daddr_t d_sblock;          /* superblock location */
-       struct csum *d_sbcsum;          /* Superblock summary info */
+       struct fs_summary_info *d_si;   /* Superblock summary info */
        caddr_t d_inoblock;             /* inode block */
        uint32_t d_inomin;              /* low ino, not ino_t for ABI compat */
        uint32_t d_inomax;              /* high ino, not ino_t for ABI compat */

Modified: head/lib/libufs/sblock.c
==============================================================================
--- head/lib/libufs/sblock.c    Tue Jun 23 21:17:13 2020        (r362558)
+++ head/lib/libufs/sblock.c    Tue Jun 23 21:28:26 2020        (r362559)
@@ -88,7 +88,7 @@ sbread(struct uufsd *disk)
                disk->d_ufs = 2;
        disk->d_bsize = fs->fs_fsize / fsbtodb(fs, 1);
        disk->d_sblock = fs->fs_sblockloc / disk->d_bsize;
-       disk->d_sbcsum = fs->fs_csp;
+       disk->d_si = fs->fs_si;
        return (0);
 }
 

Modified: head/lib/libufs/type.c
==============================================================================
--- head/lib/libufs/type.c      Tue Jun 23 21:17:13 2020        (r362558)
+++ head/lib/libufs/type.c      Tue Jun 23 21:28:26 2020        (r362559)
@@ -69,9 +69,10 @@ ufs_disk_close(struct uufsd *disk)
                free((char *)(uintptr_t)disk->d_name);
                disk->d_name = NULL;
        }
-       if (disk->d_sbcsum != NULL) {
-               free(disk->d_sbcsum);
-               disk->d_sbcsum = NULL;
+       if (disk->d_si != NULL) {
+               free(disk->d_si->si_csp);
+               free(disk->d_si);
+               disk->d_si = NULL;
        }
        return (0);
 }
@@ -164,7 +165,7 @@ again:      if ((ret = stat(name, &st)) < 0) {
        disk->d_mine = 0;
        disk->d_ufs = 0;
        disk->d_error = NULL;
-       disk->d_sbcsum = NULL;
+       disk->d_si = NULL;
 
        if (oname != name) {
                name = strdup(name);

Modified: head/sbin/fsck_ffs/setup.c
==============================================================================
--- head/sbin/fsck_ffs/setup.c  Tue Jun 23 21:17:13 2020        (r362558)
+++ head/sbin/fsck_ffs/setup.c  Tue Jun 23 21:28:26 2020        (r362559)
@@ -216,7 +216,7 @@ setup(char *dev)
        disk.d_ufs = (sblock.fs_magic == FS_UFS1_MAGIC) ? 1 : 2;
        disk.d_bsize = sblock.fs_fsize / fsbtodb(&sblock, 1);
        disk.d_sblock = sblock.fs_sblockloc / disk.d_bsize;
-       disk.d_sbcsum = sblock.fs_csp;
+       disk.d_si = sblock.fs_si;
 
        if (skipclean && ckclean && sblock.fs_clean) {
                pwarn("FILE SYSTEM CLEAN; SKIPPING CHECKS\n");
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to