Showing error 1294

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: drivers/net/tlan.c
Line in file: 393
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-05-21 20:30:05 UTC


Source:

 363
 364        addr = tag->buffer[9].address;
 365        addr |= (tag->buffer[8].address << 16) << 16;
 366        return (struct sk_buff *) addr;
 367}
 368
 369
 370static TLanIntVectorFunc *TLanIntVector[TLAN_INT_NUMBER_OF_INTS] = {
 371        NULL,
 372        TLan_HandleTxEOF,
 373        TLan_HandleStatOverflow,
 374        TLan_HandleRxEOF,
 375        TLan_HandleDummy,
 376        TLan_HandleTxEOC,
 377        TLan_HandleStatusCheck,
 378        TLan_HandleRxEOC
 379};
 380
 381static inline void
 382TLan_SetTimer( struct net_device *dev, u32 ticks, u32 type )
 383{
 384        TLanPrivateInfo *priv = netdev_priv(dev);
 385        unsigned long flags = 0;
 386
 387        if (!in_irq())
 388                spin_lock_irqsave(&priv->lock, flags);
 389        if ( priv->timer.function != NULL &&
 390                priv->timerType != TLAN_TIMER_ACTIVITY ) {
 391                if (!in_irq())
 392                        spin_unlock_irqrestore(&priv->lock, flags);
 393                return;
 394        }
 395        priv->timer.function = &TLan_Timer;
 396        if (!in_irq())
 397                spin_unlock_irqrestore(&priv->lock, flags);
 398
 399        priv->timer.data = (unsigned long) dev;
 400        priv->timerSetAt = jiffies;
 401        priv->timerType = type;
 402        mod_timer(&priv->timer, jiffies + ticks);
 403
Show full sources