Module Name: src Committed By: hannken Date: Sat Jul 12 12:13:01 UTC 2014
Modified Files: src/sys/dev/scsipi: cd.c Log Message: Prevent detaching an open device unless forced. To generate a diff of this commit: cvs rdiff -u -r1.319 -r1.320 src/sys/dev/scsipi/cd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/scsipi/cd.c diff -u src/sys/dev/scsipi/cd.c:1.319 src/sys/dev/scsipi/cd.c:1.320 --- src/sys/dev/scsipi/cd.c:1.319 Fri Apr 18 06:23:32 2014 +++ src/sys/dev/scsipi/cd.c Sat Jul 12 12:13:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cd.c,v 1.319 2014/04/18 06:23:32 martin Exp $ */ +/* $NetBSD: cd.c,v 1.320 2014/07/12 12:13:01 hannken Exp $ */ /*- * Copyright (c) 1998, 2001, 2003, 2004, 2005, 2008 The NetBSD Foundation, @@ -50,7 +50,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.319 2014/04/18 06:23:32 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.320 2014/07/12 12:13:01 hannken Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -313,6 +313,9 @@ cddetach(device_t self, int flags) struct cd_softc *cd = device_private(self); int s, bmaj, cmaj, i, mn; + if (cd->sc_dk.dk_openmask != 0 && (flags & DETACH_FORCE) == 0) + return EBUSY; + /* locate the major number */ bmaj = bdevsw_lookup_major(&cd_bdevsw); cmaj = cdevsw_lookup_major(&cd_cdevsw);