staging: comedi: das800: tidy up das800_interrupt()

Dan Carpenter dan.carpenter at oracle.com
Wed Nov 6 16:16:58 UTC 2013


Hello H Hartley Sweeten,

This is a semi-automatic email about new static checker warnings.

The patch 7f340859f26e: "staging: comedi: das800: tidy up 
das800_interrupt()" from Apr 22, 2013, leads to the following Smatch 
complaint:

drivers/staging/comedi/drivers/das800.c:509 das800_interrupt()
	 error: we previously assumed 's' could be null (see line 480)

drivers/staging/comedi/drivers/das800.c
   479		struct comedi_subdevice *s = dev->read_subdev;
   480		struct comedi_async *async = s ? s->async : NULL;
                                             ^
Patch introduces a new check.

   481		unsigned long irq_flags;
   482		unsigned int status;
   483		unsigned int val;
   484		bool fifo_empty;
   485		bool fifo_overflow;
   486		int i;
   487	
   488		status = inb(dev->iobase + DAS800_STATUS);
   489		if (!(status & IRQ))
   490			return IRQ_NONE;
   491		if (!dev->attached)
   492			return IRQ_HANDLED;
   493	
   494		spin_lock_irqsave(&dev->spinlock, irq_flags);
   495		status = das800_ind_read(dev, CONTROL1) & STATUS2_HCEN;
   496		/*
   497		 * Don't release spinlock yet since we want to make sure
   498		 * no one else disables hardware conversions.
   499		 */
   500	
   501		/* if hardware conversions are not enabled, then quit */
   502		if (status == 0) {
   503			spin_unlock_irqrestore(&dev->spinlock, irq_flags);
   504			return IRQ_HANDLED;
   505		}
   506	
   507		for (i = 0; i < DAS802_16_HALF_FIFO_SZ; i++) {
   508			val = das800_ai_get_sample(dev);
   509			if (s->maxdata == 0x0fff) {
                            ^^^^^^^^^^
Unchecked dereference.

   510				fifo_empty = !!(val & FIFO_EMPTY);
   511				fifo_overflow = !!(val & FIFO_OVF);

regards,
dan carpenter


More information about the devel mailing list