Author: kib
Date: Sat Jun 10 11:14:54 2017
New Revision: 319778
URL: https://svnweb.freebsd.org/changeset/base/319778

Log:
  MFC r319518:
  Ensure that cached struct thread does not keep spurious td_su
  reference on an UFS mount point.
  
  MFC r319519:
  Clean possible td_su reference on the struct mount being unmounted as
  the last step of ffs_unmount().
  
  Approved by:  re (gjb)

Modified:
  stable/11/sys/kern/kern_proc.c
  stable/11/sys/ufs/ffs/ffs_vfsops.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/kern/kern_proc.c
==============================================================================
--- stable/11/sys/kern/kern_proc.c      Sat Jun 10 10:40:15 2017        
(r319777)
+++ stable/11/sys/kern/kern_proc.c      Sat Jun 10 11:14:54 2017        
(r319778)
@@ -226,6 +226,8 @@ proc_dtor(void *mem, int size, void *arg)
 #endif
                /* Free all OSD associated to this thread. */
                osd_thread_exit(td);
+               td_softdep_cleanup(td);
+               MPASS(td->td_su == NULL);
 
                /* Make sure all thread destructors are executed */
                EVENTHANDLER_INVOKE(thread_dtor, td);

Modified: stable/11/sys/ufs/ffs/ffs_vfsops.c
==============================================================================
--- stable/11/sys/ufs/ffs/ffs_vfsops.c  Sat Jun 10 10:40:15 2017        
(r319777)
+++ stable/11/sys/ufs/ffs/ffs_vfsops.c  Sat Jun 10 11:14:54 2017        
(r319778)
@@ -1317,6 +1317,10 @@ ffs_unmount(mp, mntflags)
        MNT_ILOCK(mp);
        mp->mnt_flag &= ~MNT_LOCAL;
        MNT_IUNLOCK(mp);
+       if (td->td_su == mp) {
+               td->td_su = NULL;
+               vfs_rel(mp);
+       }
        return (error);
 
 fail:
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to