Since usbd pipes contain a per-controller part, I'd like to malloc them
with M_ZERO to properly initialize the per-controller fields to 0.

ok?

Index: usb_subr.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/usb_subr.c,v
retrieving revision 1.98
diff -u -p -r1.98 usb_subr.c
--- usb_subr.c  9 Feb 2014 13:21:48 -0000       1.98
+++ usb_subr.c  7 Mar 2014 13:58:34 -0000
@@ -793,25 +793,20 @@ usbd_setup_pipe(struct usbd_device *dev,
        struct usbd_pipe *p;
        usbd_status err;
 
-       DPRINTFN(1,("usbd_setup_pipe: dev=%p iface=%p ep=%p pipe=%p\n",
+       DPRINTF(("%s: dev=%p iface=%p ep=%p pipe=%p\n", __func__,
                    dev, iface, ep, pipe));
-       p = malloc(dev->bus->pipe_size, M_USB, M_NOWAIT);
+       p = malloc(dev->bus->pipe_size, M_USB, M_NOWAIT|M_ZERO);
        if (p == NULL)
                return (USBD_NOMEM);
        p->device = dev;
        p->iface = iface;
        p->endpoint = ep;
        ep->refcnt++;
-       p->intrxfer = 0;
-       p->running = 0;
-       p->aborting = 0;
-       p->repeat = 0;
        p->interval = ival;
        SIMPLEQ_INIT(&p->queue);
        err = dev->bus->methods->open_pipe(p);
        if (err) {
-               DPRINTFN(-1,("usbd_setup_pipe: endpoint=0x%x failed, error="
-                        "%s\n",
+               DPRINTF(("%s: endpoint=0x%x failed, error=%s\n", __func__,
                         ep->edesc->bEndpointAddress, usbd_errstr(err)));
                free(p, M_USB);
                return (err);

Reply via email to