Module Name:    src
Committed By:   jdolecek
Date:           Mon Sep 17 20:54:41 UTC 2018

Modified Files:
        src/sys/dev/ata [jdolecek-ncqfixes]: TODO.ncq ata.c ata_raid.c
            ata_raid_adaptec.c ata_raid_intel.c ata_raid_jmicron.c
            ata_raid_nvidia.c ata_raid_promise.c ata_raid_via.c ata_subr.c
            ata_wdc.c ld_ataraid.c wd.c

Log Message:
convert from malloc()/free() to kmem_zalloc()/kmem_free()


To generate a diff of this commit:
cvs rdiff -u -r1.4.2.2 -r1.4.2.3 src/sys/dev/ata/TODO.ncq
cvs rdiff -u -r1.141.6.4 -r1.141.6.5 src/sys/dev/ata/ata.c
cvs rdiff -u -r1.40 -r1.40.4.1 src/sys/dev/ata/ata_raid.c
cvs rdiff -u -r1.10 -r1.10.6.1 src/sys/dev/ata/ata_raid_adaptec.c
cvs rdiff -u -r1.8 -r1.8.6.1 src/sys/dev/ata/ata_raid_intel.c \
    src/sys/dev/ata/ata_raid_via.c
cvs rdiff -u -r1.6 -r1.6.6.1 src/sys/dev/ata/ata_raid_jmicron.c
cvs rdiff -u -r1.3 -r1.3.6.1 src/sys/dev/ata/ata_raid_nvidia.c
cvs rdiff -u -r1.12 -r1.12.6.1 src/sys/dev/ata/ata_raid_promise.c
cvs rdiff -u -r1.6.2.3 -r1.6.2.4 src/sys/dev/ata/ata_subr.c
cvs rdiff -u -r1.110.4.2 -r1.110.4.3 src/sys/dev/ata/ata_wdc.c
cvs rdiff -u -r1.45 -r1.45.4.1 src/sys/dev/ata/ld_ataraid.c
cvs rdiff -u -r1.441.2.2 -r1.441.2.3 src/sys/dev/ata/wd.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/ata/TODO.ncq
diff -u src/sys/dev/ata/TODO.ncq:1.4.2.2 src/sys/dev/ata/TODO.ncq:1.4.2.3
--- src/sys/dev/ata/TODO.ncq:1.4.2.2	Fri Aug 31 19:23:54 2018
+++ src/sys/dev/ata/TODO.ncq	Mon Sep 17 20:54:41 2018
@@ -1,6 +1,7 @@
 jdolecek-ncqfixes goals:
 - make ata_xfer dynamically allocated using a pool
-  - fixes: queue is allocated regardless if there are any drives, fix? 
+  - will fix: queue is allocated regardless if there are any drives, fix? 
+  - malloc() -> kmem_zalloc() in ata_queue_alloc() once this is done
 - remove limit of queued ata_xfers, allow any number of pending xfers;
   this should fix kern/52614 AKA wdc-attached ATAPI cd(4)
 - remove the wd(4) flush condition, just allocate a dynamic ata_xfer

Index: src/sys/dev/ata/ata.c
diff -u src/sys/dev/ata/ata.c:1.141.6.4 src/sys/dev/ata/ata.c:1.141.6.5
--- src/sys/dev/ata/ata.c:1.141.6.4	Mon Sep 17 19:00:43 2018
+++ src/sys/dev/ata/ata.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ata.c,v 1.141.6.4 2018/09/17 19:00:43 jdolecek Exp $	*/
+/*	$NetBSD: ata.c,v 1.141.6.5 2018/09/17 20:54:41 jdolecek Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Manuel Bouyer.  All rights reserved.
@@ -25,14 +25,13 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata.c,v 1.141.6.4 2018/09/17 19:00:43 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata.c,v 1.141.6.5 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include "opt_ata.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
-#include <sys/malloc.h>
 #include <sys/device.h>
 #include <sys/conf.h>
 #include <sys/fcntl.h>
@@ -292,7 +291,7 @@ atabusconfig(struct atabus_softc *atabus
 	cv_broadcast(&atabus_qcv);
 	mutex_exit(&atabus_qlock);
 
-	free(atabus_initq, M_DEVBUF);
+	kmem_free(atabus_initq, sizeof(*atabus_initq));
 
 	ata_delref(chp);
 
@@ -418,7 +417,7 @@ atabusconfig_thread(void *arg)
 	cv_broadcast(&atabus_qcv);
 	mutex_exit(&atabus_qlock);
 
-	free(atabus_initq, M_DEVBUF);
+	kmem_free(atabus_initq, sizeof(*atabus_initq));
 
 	ata_delref(chp);
 
@@ -569,7 +568,7 @@ atabus_attach(device_t parent, device_t 
 
 	RUN_ONCE(&ata_init_ctrl, atabus_init);
 
-	initq = malloc(sizeof(*initq), M_DEVBUF, M_WAITOK);
+	initq = kmem_zalloc(sizeof(*initq), KM_SLEEP);
 	initq->atabus_sc = sc;
 	mutex_enter(&atabus_qlock);
 	TAILQ_INSERT_TAIL(&atabus_initq_head, initq, atabus_initq);
@@ -716,9 +715,8 @@ atabus_alloc_drives(struct ata_channel *
 	if (chp->ch_ndrives != ndrives)
 		atabus_free_drives(chp);
 	if (chp->ch_drive == NULL) {
-		chp->ch_drive = malloc(
-		    sizeof(struct ata_drive_datas) * ndrives,
-		    M_DEVBUF, M_NOWAIT | M_ZERO);
+		chp->ch_drive = kmem_zalloc(
+		    sizeof(struct ata_drive_datas) * ndrives, KM_NOSLEEP);
 	}
 	if (chp->ch_drive == NULL) {
 	    aprint_error_dev(chp->ch_atac->atac_dev,
@@ -761,8 +759,9 @@ atabus_free_drives(struct ata_channel *c
 
 	if (chp->ch_drive == NULL)
 		return;
+	kmem_free(chp->ch_drive,
+	    sizeof(struct ata_drive_datas) * chp->ch_ndrives);
 	chp->ch_ndrives = 0;
-	free(chp->ch_drive, M_DEVBUF);
 	chp->ch_drive = NULL;
 }
 
@@ -2218,7 +2217,7 @@ atabus_rescan(device_t self, const char 
 		}
 	}
 
-	initq = malloc(sizeof(*initq), M_DEVBUF, M_WAITOK);
+	initq = kmem_zalloc(sizeof(*initq), KM_SLEEP);
 	initq->atabus_sc = sc;
 	mutex_enter(&atabus_qlock);
 	TAILQ_INSERT_TAIL(&atabus_initq_head, initq, atabus_initq);

Index: src/sys/dev/ata/ata_raid.c
diff -u src/sys/dev/ata/ata_raid.c:1.40 src/sys/dev/ata/ata_raid.c:1.40.4.1
--- src/sys/dev/ata/ata_raid.c:1.40	Fri Jun 22 09:06:04 2018
+++ src/sys/dev/ata/ata_raid.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ata_raid.c,v 1.40 2018/06/22 09:06:04 pgoyette Exp $	*/
+/*	$NetBSD: ata_raid.c,v 1.40.4.1 2018/09/17 20:54:41 jdolecek Exp $	*/
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata_raid.c,v 1.40 2018/06/22 09:06:04 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata_raid.c,v 1.40.4.1 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -50,7 +50,6 @@ __KERNEL_RCSID(0, "$NetBSD: ata_raid.c,v
 #include <sys/disk.h>
 #include <sys/disklabel.h>
 #include <sys/fcntl.h>
-#include <sys/malloc.h>
 #include <sys/vnode.h>
 #include <sys/proc.h>
 #include <sys/module.h>
@@ -274,7 +273,7 @@ ata_raid_get_array_info(u_int type, u_in
 	}
 
 	/* Need to allocate a new one. */
-	aai = malloc(sizeof(*aai), M_DEVBUF, M_WAITOK | M_ZERO);
+	aai = kmem_zalloc(sizeof(*aai), KM_SLEEP);
 	aai->aai_type = type;
 	aai->aai_arrayno = arrayno;
 	aai->aai_curdisk = 0;

Index: src/sys/dev/ata/ata_raid_adaptec.c
diff -u src/sys/dev/ata/ata_raid_adaptec.c:1.10 src/sys/dev/ata/ata_raid_adaptec.c:1.10.6.1
--- src/sys/dev/ata/ata_raid_adaptec.c:1.10	Wed Nov  1 19:34:46 2017
+++ src/sys/dev/ata/ata_raid_adaptec.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ata_raid_adaptec.c,v 1.10 2017/11/01 19:34:46 mlelstv Exp $	*/
+/*	$NetBSD: ata_raid_adaptec.c,v 1.10.6.1 2018/09/17 20:54:41 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2000,2001,2002 S�ren Schmidt <[email protected]>
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata_raid_adaptec.c,v 1.10 2017/11/01 19:34:46 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata_raid_adaptec.c,v 1.10.6.1 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -45,7 +45,6 @@ __KERNEL_RCSID(0, "$NetBSD: ata_raid_ada
 #include <sys/disk.h>
 #include <sys/disklabel.h>
 #include <sys/fcntl.h>
-#include <sys/malloc.h>
 #include <sys/vnode.h>
 #include <sys/kauth.h>
 
@@ -77,7 +76,7 @@ ata_raid_read_config_adaptec(struct wd_s
 	struct ataraid_array_info *aai;
 	struct ataraid_disk_info *adi;
 
-	info = malloc(sizeof(*info), M_DEVBUF, M_WAITOK);
+	info = kmem_zalloc(sizeof(*info), KM_SLEEP);
 
 	bmajor = devsw_name2blk(dksc->sc_xname, NULL, 0);
 
@@ -189,6 +188,6 @@ ata_raid_read_config_adaptec(struct wd_s
 	error = 0;
 
  out:
-	free(info, M_DEVBUF);
+	kmem_free(info, sizeof(*info));
 	return (error);
 }

Index: src/sys/dev/ata/ata_raid_intel.c
diff -u src/sys/dev/ata/ata_raid_intel.c:1.8 src/sys/dev/ata/ata_raid_intel.c:1.8.6.1
--- src/sys/dev/ata/ata_raid_intel.c:1.8	Wed Nov  1 19:34:46 2017
+++ src/sys/dev/ata/ata_raid_intel.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ata_raid_intel.c,v 1.8 2017/11/01 19:34:46 mlelstv Exp $	*/
+/*	$NetBSD: ata_raid_intel.c,v 1.8.6.1 2018/09/17 20:54:41 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2000-2008 S�ren Schmidt <[email protected]>
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata_raid_intel.c,v 1.8 2017/11/01 19:34:46 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata_raid_intel.c,v 1.8.6.1 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -43,7 +43,6 @@ __KERNEL_RCSID(0, "$NetBSD: ata_raid_int
 #include <sys/disk.h>
 #include <sys/disklabel.h>
 #include <sys/fcntl.h>
-#include <sys/malloc.h>
 #include <sys/vnode.h>
 #include <sys/kauth.h>
 
@@ -138,6 +137,7 @@ ata_raid_read_config_intel(struct wd_sof
 {
 	struct dk_softc *dksc = &sc->sc_dksc;
 	struct intel_raid_conf *info;
+	const size_t infosz = 1536;
 	struct intel_raid_mapping *map;
 	struct ataraid_array_info *aai;
 	struct ataraid_disk_info *adi;
@@ -148,7 +148,7 @@ ata_raid_read_config_intel(struct wd_sof
 	dev_t dev;
 	int volumeid, diskidx;
 
-	info = malloc(1536, M_DEVBUF, M_WAITOK|M_ZERO);
+	info = kmem_zalloc(infosz, KM_SLEEP);
 
 	bmajor = devsw_name2blk(dksc->sc_xname, NULL, 0);
 
@@ -298,7 +298,7 @@ findvol:
 	}
 
  out:
-	free(info, M_DEVBUF);
+	kmem_free(info, infosz);
 	return error;
 }
 
Index: src/sys/dev/ata/ata_raid_via.c
diff -u src/sys/dev/ata/ata_raid_via.c:1.8 src/sys/dev/ata/ata_raid_via.c:1.8.6.1
--- src/sys/dev/ata/ata_raid_via.c:1.8	Wed Nov  1 19:34:46 2017
+++ src/sys/dev/ata/ata_raid_via.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ata_raid_via.c,v 1.8 2017/11/01 19:34:46 mlelstv Exp $	*/
+/*	$NetBSD: ata_raid_via.c,v 1.8.6.1 2018/09/17 20:54:41 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2000,2001,2002 S�ren Schmidt <[email protected]>
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata_raid_via.c,v 1.8 2017/11/01 19:34:46 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata_raid_via.c,v 1.8.6.1 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -45,7 +45,6 @@ __KERNEL_RCSID(0, "$NetBSD: ata_raid_via
 #include <sys/disk.h>
 #include <sys/disklabel.h>
 #include <sys/fcntl.h>
-#include <sys/malloc.h>
 #include <sys/vnode.h>
 #include <sys/kauth.h>
 
@@ -126,7 +125,7 @@ ata_raid_read_config_via(struct wd_softc
 	struct ataraid_array_info *aai;
 	struct ataraid_disk_info *adi;
 
-	info = malloc(sizeof(*info), M_DEVBUF, M_WAITOK);
+	info = kmem_zalloc(sizeof(*info), KM_SLEEP);
 
 	bmajor = devsw_name2blk(dksc->sc_xname, NULL, 0);
 
@@ -258,6 +257,6 @@ ata_raid_read_config_via(struct wd_softc
 	error = 0;
 
  out:
-	free(info, M_DEVBUF);
+	kmem_free(info, sizeof(*info));
 	return (error);
 }

Index: src/sys/dev/ata/ata_raid_jmicron.c
diff -u src/sys/dev/ata/ata_raid_jmicron.c:1.6 src/sys/dev/ata/ata_raid_jmicron.c:1.6.6.1
--- src/sys/dev/ata/ata_raid_jmicron.c:1.6	Wed Nov  1 19:34:46 2017
+++ src/sys/dev/ata/ata_raid_jmicron.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ata_raid_jmicron.c,v 1.6 2017/11/01 19:34:46 mlelstv Exp $	*/
+/*	$NetBSD: ata_raid_jmicron.c,v 1.6.6.1 2018/09/17 20:54:41 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2000-2008 S�ren Schmidt <[email protected]>
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata_raid_jmicron.c,v 1.6 2017/11/01 19:34:46 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata_raid_jmicron.c,v 1.6.6.1 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -45,7 +45,6 @@ __KERNEL_RCSID(0, "$NetBSD: ata_raid_jmi
 #include <sys/disk.h>
 #include <sys/disklabel.h>
 #include <sys/fcntl.h>
-#include <sys/malloc.h>
 #include <sys/vnode.h>
 #include <sys/kauth.h>
 
@@ -130,7 +129,7 @@ ata_raid_read_config_jmicron(struct wd_s
 	int bmajor, error, count, disk, total_disks;
 	dev_t dev;
 
-	info = malloc(sizeof(*info), M_DEVBUF, M_WAITOK|M_ZERO);
+	info = kmem_zalloc(sizeof(*info), KM_SLEEP);
 
 	bmajor = devsw_name2blk(dksc->sc_xname, NULL, 0);
 
@@ -265,6 +264,6 @@ ata_raid_read_config_jmicron(struct wd_s
 	error = 0;
 
  out:
-	free(info, M_DEVBUF);
+	kmem_free(info, sizeof(*info));
 	return error;
 }

Index: src/sys/dev/ata/ata_raid_nvidia.c
diff -u src/sys/dev/ata/ata_raid_nvidia.c:1.3 src/sys/dev/ata/ata_raid_nvidia.c:1.3.6.1
--- src/sys/dev/ata/ata_raid_nvidia.c:1.3	Wed Nov  1 19:34:46 2017
+++ src/sys/dev/ata/ata_raid_nvidia.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ata_raid_nvidia.c,v 1.3 2017/11/01 19:34:46 mlelstv Exp $	*/
+/*	$NetBSD: ata_raid_nvidia.c,v 1.3.6.1 2018/09/17 20:54:41 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2000 - 2008 S�ren Schmidt <[email protected]>
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata_raid_nvidia.c,v 1.3 2017/11/01 19:34:46 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata_raid_nvidia.c,v 1.3.6.1 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -43,7 +43,6 @@ __KERNEL_RCSID(0, "$NetBSD: ata_raid_nvi
 #include <sys/disk.h>
 #include <sys/disklabel.h>
 #include <sys/fcntl.h>
-#include <sys/malloc.h>
 #include <sys/vnode.h>
 #include <sys/kauth.h>
 
@@ -136,7 +135,7 @@ ata_raid_read_config_nvidia(struct wd_so
 	  struct _arrayno *next;
 	} arrayno = { 0, 0, NULL}, *anptr;
 
-	info = malloc(sizeof(*info), M_DEVBUF, M_WAITOK);
+	info = kmem_zalloc(sizeof(*info), KM_SLEEP);
 
 	bmajor = devsw_name2blk(dksc->sc_xname, NULL, 0);
 
@@ -200,7 +199,7 @@ ata_raid_read_config_nvidia(struct wd_so
 		/* new array */
 		anptr->magic1 = info->magic_1;
 		anptr->magic2 = info->magic_2;
-		anptr->next = malloc(sizeof(arrayno), M_DEVBUF, M_WAITOK);
+		anptr->next = kmem_zalloc(sizeof(arrayno), KM_SLEEP);
 	}
 	aai = ata_raid_get_array_info(ATA_RAID_TYPE_NVIDIA, count);
 
@@ -257,6 +256,6 @@ ata_raid_read_config_nvidia(struct wd_so
 	error = 0;
 
  out:
-	free(info, M_DEVBUF);
+	kmem_free(info, sizeof(*info));
 	return (error);
 }

Index: src/sys/dev/ata/ata_raid_promise.c
diff -u src/sys/dev/ata/ata_raid_promise.c:1.12 src/sys/dev/ata/ata_raid_promise.c:1.12.6.1
--- src/sys/dev/ata/ata_raid_promise.c:1.12	Wed Nov  1 19:34:46 2017
+++ src/sys/dev/ata/ata_raid_promise.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ata_raid_promise.c,v 1.12 2017/11/01 19:34:46 mlelstv Exp $	*/
+/*	$NetBSD: ata_raid_promise.c,v 1.12.6.1 2018/09/17 20:54:41 jdolecek Exp $	*/
 
 /*-
  * Copyright (c) 2000,2001,2002 S�ren Schmidt <[email protected]>
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata_raid_promise.c,v 1.12 2017/11/01 19:34:46 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata_raid_promise.c,v 1.12.6.1 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -45,7 +45,6 @@ __KERNEL_RCSID(0, "$NetBSD: ata_raid_pro
 #include <sys/disk.h>
 #include <sys/disklabel.h>
 #include <sys/fcntl.h>
-#include <sys/malloc.h>
 #include <sys/vnode.h>
 #include <sys/kauth.h>
 
@@ -77,7 +76,7 @@ ata_raid_read_config_promise(struct wd_s
 	struct ataraid_array_info *aai;
 	struct ataraid_disk_info *adi;
 
-	info = malloc(sizeof(*info), M_DEVBUF, M_WAITOK);
+	info = kmem_zalloc(sizeof(*info), KM_SLEEP);
 
 	bmajor = devsw_name2blk(dksc->sc_xname, NULL, 0);
 
@@ -208,6 +207,6 @@ ata_raid_read_config_promise(struct wd_s
 	error = 0;
 
  out:
-	free(info, M_DEVBUF);
+	kmem_free(info, sizeof(*info));
 	return (error);
 }

Index: src/sys/dev/ata/ata_subr.c
diff -u src/sys/dev/ata/ata_subr.c:1.6.2.3 src/sys/dev/ata/ata_subr.c:1.6.2.4
--- src/sys/dev/ata/ata_subr.c:1.6.2.3	Mon Sep 17 19:00:43 2018
+++ src/sys/dev/ata/ata_subr.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ata_subr.c,v 1.6.2.3 2018/09/17 19:00:43 jdolecek Exp $	*/
+/*	$NetBSD: ata_subr.c,v 1.6.2.4 2018/09/17 20:54:41 jdolecek Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Manuel Bouyer.  All rights reserved.
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata_subr.c,v 1.6.2.3 2018/09/17 19:00:43 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata_subr.c,v 1.6.2.4 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include "opt_ata.h"
 
@@ -167,6 +167,7 @@ ata_queue_alloc(uint8_t openings)
 	if (openings > ATA_MAX_OPENINGS)
 		openings = ATA_MAX_OPENINGS;
 
+	/* XXX convert to kmem_zalloc() once ata_xfer is moved to pool */
 	struct ata_queue *chq = malloc(offsetof(struct ata_queue, queue_xfers[openings]),
 	    M_DEVBUF, M_WAITOK | M_ZERO);
 

Index: src/sys/dev/ata/ata_wdc.c
diff -u src/sys/dev/ata/ata_wdc.c:1.110.4.2 src/sys/dev/ata/ata_wdc.c:1.110.4.3
--- src/sys/dev/ata/ata_wdc.c:1.110.4.2	Mon Sep 17 18:36:13 2018
+++ src/sys/dev/ata/ata_wdc.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ata_wdc.c,v 1.110.4.2 2018/09/17 18:36:13 jdolecek Exp $	*/
+/*	$NetBSD: ata_wdc.c,v 1.110.4.3 2018/09/17 20:54:41 jdolecek Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001, 2003 Manuel Bouyer.
@@ -54,7 +54,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata_wdc.c,v 1.110.4.2 2018/09/17 18:36:13 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata_wdc.c,v 1.110.4.3 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include "opt_ata.h"
 #include "opt_wdc.h"
@@ -66,7 +66,6 @@ __KERNEL_RCSID(0, "$NetBSD: ata_wdc.c,v 
 #include <sys/stat.h>
 #include <sys/buf.h>
 #include <sys/bufq.h>
-#include <sys/malloc.h>
 #include <sys/device.h>
 #include <sys/disklabel.h>
 #include <sys/syslog.h>

Index: src/sys/dev/ata/ld_ataraid.c
diff -u src/sys/dev/ata/ld_ataraid.c:1.45 src/sys/dev/ata/ld_ataraid.c:1.45.4.1
--- src/sys/dev/ata/ld_ataraid.c:1.45	Sun Jun  3 10:20:54 2018
+++ src/sys/dev/ata/ld_ataraid.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ld_ataraid.c,v 1.45 2018/06/03 10:20:54 martin Exp $ */
+/*	$NetBSD: ld_ataraid.c,v 1.45.4.1 2018/09/17 20:54:41 jdolecek Exp $ */
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -47,7 +47,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ld_ataraid.c,v 1.45 2018/06/03 10:20:54 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ld_ataraid.c,v 1.45.4.1 2018/09/17 20:54:41 jdolecek Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "bio.h"
@@ -64,7 +64,6 @@ __KERNEL_RCSID(0, "$NetBSD: ld_ataraid.c
 #include <sys/disk.h>
 #include <sys/disklabel.h>
 #include <sys/fcntl.h>
-#include <sys/malloc.h>
 #include <sys/vnode.h>
 #include <sys/kauth.h>
 #include <sys/module.h>

Index: src/sys/dev/ata/wd.c
diff -u src/sys/dev/ata/wd.c:1.441.2.2 src/sys/dev/ata/wd.c:1.441.2.3
--- src/sys/dev/ata/wd.c:1.441.2.2	Sat Sep  1 09:48:32 2018
+++ src/sys/dev/ata/wd.c	Mon Sep 17 20:54:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: wd.c,v 1.441.2.2 2018/09/01 09:48:32 jdolecek Exp $ */
+/*	$NetBSD: wd.c,v 1.441.2.3 2018/09/17 20:54:41 jdolecek Exp $ */
 
 /*
  * Copyright (c) 1998, 2001 Manuel Bouyer.  All rights reserved.
@@ -54,7 +54,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wd.c,v 1.441.2.2 2018/09/01 09:48:32 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wd.c,v 1.441.2.3 2018/09/17 20:54:41 jdolecek Exp $");
 
 #include "opt_ata.h"
 #include "opt_wd.h"
@@ -69,7 +69,6 @@ __KERNEL_RCSID(0, "$NetBSD: wd.c,v 1.441
 #include <sys/buf.h>
 #include <sys/bufq.h>
 #include <sys/uio.h>
-#include <sys/malloc.h>
 #include <sys/device.h>
 #include <sys/disklabel.h>
 #include <sys/disk.h>
@@ -548,9 +547,9 @@ wddetach(device_t self, int flags)
 #ifdef WD_SOFTBADSECT
 	/* Clean out the bad sector list */
 	while (!SLIST_EMPTY(&wd->sc_bslist)) {
-		void *head = SLIST_FIRST(&wd->sc_bslist);
+		struct disk_badsectors *dbs = SLIST_FIRST(&wd->sc_bslist);
 		SLIST_REMOVE_HEAD(&wd->sc_bslist, dbs_next);
-		free(head, M_TEMP);
+		kmem_free(dbs, sizeof(*dbs));
 	}
 	wd->sc_bscount = 0;
 #endif
@@ -892,7 +891,7 @@ retry2:
 		     (wd->drvp->ata_vers < 4 && xfer->c_bio.r_error & 192))) {
 			struct disk_badsectors *dbs;
 
-			dbs = malloc(sizeof *dbs, M_TEMP, M_NOWAIT);
+			dbs = kmem_zalloc(sizeof *dbs, KM_NOSLEEP);
 			if (dbs == NULL) {
 				aprint_error_dev(dksc->sc_dev,
 				    "failed to add bad block to list\n");
@@ -1219,6 +1218,7 @@ wdioctl(dev_t dev, u_long cmd, void *add
 		 * back to user space whilst the summary is returned via
 		 * the struct passed in via the ioctl.
 		 */
+		mutex_enter(&wd->sc_lock);
 		SLIST_FOREACH(dbs, &wd->sc_bslist, dbs_next) {
 			if (skip > 0) {
 				missing--;
@@ -1233,6 +1233,7 @@ wdioctl(dev_t dev, u_long cmd, void *add
 			missing--;
 			count++;
 		}
+		mutex_exit(&wd->sc_lock);
 		dbsi.dbsi_left = missing;
 		dbsi.dbsi_copied = count;
 		*(struct disk_badsecinfo *)addr = dbsi;
@@ -1241,11 +1242,14 @@ wdioctl(dev_t dev, u_long cmd, void *add
 
 	case DIOCBSFLUSH :
 		/* Clean out the bad sector list */
+		mutex_enter(&wd->sc_lock);
 		while (!SLIST_EMPTY(&wd->sc_bslist)) {
-			void *head = SLIST_FIRST(&wd->sc_bslist);
+			struct disk_badsectors *dbs =
+			    SLIST_FIRST(&wd->sc_bslist);
 			SLIST_REMOVE_HEAD(&wd->sc_bslist, dbs_next);
-			free(head, M_TEMP);
+			kmem_free(dbs, sizeof(*dbs));
 		}
+		mutex_exit(&wd->sc_lock);
 		wd->sc_bscount = 0;
 		return 0;
 #endif
@@ -1306,7 +1310,7 @@ wdioctl(dev_t dev, u_long cmd, void *add
 			void *tbuf;
 			if (atareq->datalen < DEV_BSIZE
 			    && atareq->command == WDCC_IDENTIFY) {
-				tbuf = malloc(DEV_BSIZE, M_TEMP, M_WAITOK);
+				tbuf = kmem_zalloc(DEV_BSIZE, KM_SLEEP);
 				wi->wi_iov.iov_base = tbuf;
 				wi->wi_iov.iov_len = DEV_BSIZE;
 				UIO_SETUP_SYSSPACE(&wi->wi_uio);
@@ -1328,7 +1332,7 @@ wdioctl(dev_t dev, u_long cmd, void *add
 			if (tbuf != NULL && error1 == 0) {
 				error1 = copyout(tbuf, atareq->databuf,
 				    atareq->datalen);
-				free(tbuf, M_TEMP);
+				kmem_free(tbuf, DEV_BSIZE);
 			}
 		} else {
 			/* No need to call physio if we don't have any
@@ -1919,7 +1923,7 @@ wi_get(struct wd_softc *wd)
 {
 	struct wd_ioctl *wi;
 
-	wi = malloc(sizeof(struct wd_ioctl), M_TEMP, M_WAITOK|M_ZERO);
+	wi = kmem_zalloc(sizeof(struct wd_ioctl), KM_SLEEP);
 	wi->wi_softc = wd;
 	buf_init(&wi->wi_bp);
 
@@ -1934,7 +1938,7 @@ void
 wi_free(struct wd_ioctl *wi)
 {
 	buf_destroy(&wi->wi_bp);
-	free(wi, M_TEMP);
+	kmem_free(wi, sizeof(*wi));
 }
 
 /*

Reply via email to