Pass the comedi_device pointer (the urb context) to this function instead of the private data pointer. Use a local variable for the urb pointer that is setup and submitted. Remove the sanity check of the private data. This function can only get called if the allocation was successful during the attach. Signed-off-by: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx> Cc: Ian Abbott <abbotti@xxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxx> --- drivers/staging/comedi/drivers/usbdux.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/drivers/staging/comedi/drivers/usbdux.c b/drivers/staging/comedi/drivers/usbdux.c index 7304ef0..ad537ed 100644 --- a/drivers/staging/comedi/drivers/usbdux.c +++ b/drivers/staging/comedi/drivers/usbdux.c @@ -1546,25 +1546,20 @@ static void usbduxsub_pwm_irq(struct urb *urb) } } -static int usbduxsub_submit_pwm_urbs(struct usbdux_private *usbduxsub) +static int usbduxsub_submit_pwm_urbs(struct comedi_device *dev) { - int err_flag; - - if (!usbduxsub) - return -EFAULT; + struct usbdux_private *devpriv = dev->private; + struct urb *urb = devpriv->urb_pwm; /* in case of a resubmission after an unlink... */ - usb_fill_bulk_urb(usbduxsub->urb_pwm, - usbduxsub->usbdev, - usb_sndbulkpipe(usbduxsub->usbdev, PWM_EP), - usbduxsub->urb_pwm->transfer_buffer, - usbduxsub->size_pwm_buf, usbduxsub_pwm_irq, - usbduxsub->comedidev); - - err_flag = usb_submit_urb(usbduxsub->urb_pwm, GFP_ATOMIC); - if (err_flag) - return err_flag; - return 0; + usb_fill_bulk_urb(urb, devpriv->usbdev, + usb_sndbulkpipe(devpriv->usbdev, PWM_EP), + urb->transfer_buffer, + devpriv->size_pwm_buf, + usbduxsub_pwm_irq, + dev); + + return usb_submit_urb(urb, GFP_ATOMIC); } static int usbdux_pwm_period(struct comedi_device *dev, @@ -1608,7 +1603,7 @@ static int usbdux_pwm_start(struct comedi_device *dev, ((char *)(this_usbduxsub->urb_pwm->transfer_buffer))[i] = 0; this_usbduxsub->pwm_cmd_running = 1; - ret = usbduxsub_submit_pwm_urbs(this_usbduxsub); + ret = usbduxsub_submit_pwm_urbs(dev); if (ret < 0) { this_usbduxsub->pwm_cmd_running = 0; return ret; -- 1.8.3.2 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel