Merge branch 'origin'
[pandora-kernel.git] / drivers / media / dvb / dvb-usb / dvb-usb-urb.c
index f5799a4..9002f35 100644 (file)
@@ -21,7 +21,7 @@ int dvb_usb_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf,
        if (wbuf == NULL || wlen == 0)
                return -EINVAL;
 
-       if ((ret = down_interruptible(&d->usb_sem)))
+       if ((ret = mutex_lock_interruptible(&d->usb_mutex)))
                return ret;
 
        deb_xfer(">>> ");
@@ -53,7 +53,7 @@ int dvb_usb_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf,
                }
        }
 
-       up(&d->usb_sem);
+       mutex_unlock(&d->usb_mutex);
        return ret;
 }
 EXPORT_SYMBOL(dvb_usb_generic_rw);
@@ -175,15 +175,13 @@ static int dvb_usb_allocate_stream_buffers(struct dvb_usb_device *d, int num, un
 
        deb_mem("all in all I will use %lu bytes for streaming\n",num*size);
 
-       if ((d->buf_list = kmalloc(num*sizeof(u8 *), GFP_ATOMIC)) == NULL)
+       if ((d->buf_list = kcalloc(num, sizeof(u8 *), GFP_ATOMIC)) == NULL)
                return -ENOMEM;
 
-       if ((d->dma_addr = kmalloc(num*sizeof(dma_addr_t), GFP_ATOMIC)) == NULL) {
+       if ((d->dma_addr = kcalloc(num, sizeof(dma_addr_t), GFP_ATOMIC)) == NULL) {
                kfree(d->buf_list);
                return -ENOMEM;
        }
-       memset(d->buf_list,0,num*sizeof(u8 *));
-       memset(d->dma_addr,0,num*sizeof(dma_addr_t));
 
        d->state |= DVB_USB_STATE_URB_BUF;
 
@@ -196,7 +194,9 @@ static int dvb_usb_allocate_stream_buffers(struct dvb_usb_device *d, int num, un
                        dvb_usb_free_stream_buffers(d);
                        return -ENOMEM;
                }
-               deb_mem("buffer %d: %p (dma: %d)\n",d->buf_num,d->buf_list[d->buf_num],d->dma_addr[d->buf_num]);
+               deb_mem("buffer %d: %p (dma: %llu)\n",
+                       d->buf_num, d->buf_list[d->buf_num],
+                       (unsigned long long)d->dma_addr[d->buf_num]);
                memset(d->buf_list[d->buf_num],0,size);
        }
        deb_mem("allocation successful\n");
@@ -283,10 +283,9 @@ int dvb_usb_urb_init(struct dvb_usb_device *d)
        usb_clear_halt(d->udev,usb_rcvbulkpipe(d->udev,d->props.urb.endpoint));
 
        /* allocate the array for the data transfer URBs */
-       d->urb_list = kmalloc(d->props.urb.count * sizeof(struct urb *),GFP_KERNEL);
+       d->urb_list = kzalloc(d->props.urb.count * sizeof(struct urb *),GFP_KERNEL);
        if (d->urb_list == NULL)
                return -ENOMEM;
-       memset(d->urb_list,0,d->props.urb.count * sizeof(struct urb *));
        d->state |= DVB_USB_STATE_URB_LIST;
 
        switch (d->props.urb.type) {