Module Name: src Committed By: mlelstv Date: Sun Jun 26 07:22:15 UTC 2016
Modified Files: src/sys/dev: dksubr.c Log Message: Avoid NULL deref in case no bufq has been set. To generate a diff of this commit: cvs rdiff -u -r1.86 -r1.87 src/sys/dev/dksubr.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/dksubr.c diff -u src/sys/dev/dksubr.c:1.86 src/sys/dev/dksubr.c:1.87 --- src/sys/dev/dksubr.c:1.86 Mon Jan 4 10:02:15 2016 +++ src/sys/dev/dksubr.c Sun Jun 26 07:22:15 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: dksubr.c,v 1.86 2016/01/04 10:02:15 mlelstv Exp $ */ +/* $NetBSD: dksubr.c,v 1.87 2016/06/26 07:22:15 mlelstv Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 1999, 2002, 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dksubr.c,v 1.86 2016/01/04 10:02:15 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dksubr.c,v 1.87 2016/06/26 07:22:15 mlelstv Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -658,12 +658,13 @@ dk_ioctl(struct dk_softc *dksc, dev_t de struct disk_strategy *dks = (void *)data; mutex_enter(&dksc->sc_iolock); - strlcpy(dks->dks_name, bufq_getstrategyname(dksc->sc_bufq), - sizeof(dks->dks_name)); + if (dksc->sc_bufq != NULL) + strlcpy(dks->dks_name, bufq_getstrategyname(dksc->sc_bufq), + sizeof(dks->dks_name)); + else + error = EINVAL; mutex_exit(&dksc->sc_iolock); dks->dks_paramlen = 0; - - return 0; } case DIOCSSTRATEGY: @@ -687,8 +688,6 @@ dk_ioctl(struct dk_softc *dksc, dev_t de dksc->sc_bufq = new; mutex_exit(&dksc->sc_iolock); bufq_free(old); - - return 0; } default: