Author: mckusick
Date: Wed Mar 12 01:28:21 2014
New Revision: 263062
URL: http://svnweb.freebsd.org/changeset/base/263062

Log:
  Avoid segment fault when attempting to clean up cylinder group
  buffer cache.
  
  PR:           187221
  Submitted by: Petr Lampa <[email protected]>
  Obtained from:        Petr Lampa <[email protected]>
  MFC after:    1 week

Modified:
  head/sbin/fsck_ffs/fsutil.c

Modified: head/sbin/fsck_ffs/fsutil.c
==============================================================================
--- head/sbin/fsck_ffs/fsutil.c Tue Mar 11 23:54:13 2014        (r263061)
+++ head/sbin/fsck_ffs/fsutil.c Wed Mar 12 01:28:21 2014        (r263062)
@@ -436,13 +436,15 @@ ckfini(int markclean)
        }
        if (numbufs != cnt)
                errx(EEXIT, "panic: lost %d buffers", numbufs - cnt);
-       for (cnt = 0; cnt < sblock.fs_ncg; cnt++) {
-               if (cgbufs[cnt].b_un.b_cg == NULL)
-                       continue;
-               flush(fswritefd, &cgbufs[cnt]);
-               free(cgbufs[cnt].b_un.b_cg);
+       if (cgbufs != NULL) {
+               for (cnt = 0; cnt < sblock.fs_ncg; cnt++) {
+                       if (cgbufs[cnt].b_un.b_cg == NULL)
+                               continue;
+                       flush(fswritefd, &cgbufs[cnt]);
+                       free(cgbufs[cnt].b_un.b_cg);
+               }
+               free(cgbufs);
        }
-       free(cgbufs);
        pbp = pdirbp = (struct bufarea *)0;
        if (cursnapshot == 0 && sblock.fs_clean != markclean) {
                if ((sblock.fs_clean = markclean) != 0) {
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to