Showing error 1704

User: Jiri Slaby
Error type: Double Unlock
Error type description: Some lock is unlocked twice unintentionally in a sequence
File location: drivers/net/hamradio/baycom_par.c
Line in file: 292
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 15:16:58 UTC


Source:

262                /* decrement and set the dcd variable */
263                if (bc->modem.par96.dcd_count >= 0)
264                        bc->modem.par96.dcd_count -= 2;
265                hdlcdrv_setdcd(&bc->hdrv, bc->modem.par96.dcd_count > 0);
266        } else {
267                hdlcdrv_setdcd(&bc->hdrv, !!(pp->ops->read_status(pp) & PAR96_DCD));
268        }
269}
270
271/* --------------------------------------------------------------------- */
272
273static void par96_interrupt(void *dev_id)
274{
275        struct net_device *dev = dev_id;
276        struct baycom_state *bc = netdev_priv(dev);
277
278        baycom_int_freq(bc);
279        /*
280         * check if transmitter active
281         */
282        if (hdlcdrv_ptt(&bc->hdrv))
283                par96_tx(dev, bc);
284        else {
285                par96_rx(dev, bc);
286                if (--bc->modem.arb_divider <= 0) {
287                        bc->modem.arb_divider = 6;
288                        local_irq_enable();
289                        hdlcdrv_arbitrate(dev, &bc->hdrv);
290                }
291        }
292        local_irq_enable();
293        hdlcdrv_transmitter(dev, &bc->hdrv);
294        hdlcdrv_receiver(dev, &bc->hdrv);
295        local_irq_disable();
296}
297
298/* --------------------------------------------------------------------- */
299
300static void par96_wakeup(void *handle)
301{
302        struct net_device *dev = (struct net_device *)handle;
Show full sources