Showing error 606

User: Jiri Slaby
Error type: Double Unlock
Error type description: Some lock is unlocked twice unintentionally in a sequence
File location: sound/oss/sscape.c
Line in file: 426
Project: Linux Kernel
Project version: 2.6.28
Confirmation: Driver removed b7d5d946e50116f4150542f881ac90ac74c28165
Tools: Stanse (1.2)
Entered: 2011-11-07 22:20:57 UTC


Source:

 396                devc->dma_allocated = 0;
 397        }
 398        spin_unlock_irqrestore(&devc->lock,flags);
 399        return;
 400}
 401
 402static void sscape_coproc_reset(void *dev_info)
 403{
 404}
 405
 406static int sscape_download_boot(struct sscape_info *devc, unsigned char *block, int size, int flag)
 407{
 408        unsigned long flags;
 409        unsigned char temp;
 410        volatile int done, timeout_val;
 411        static unsigned char codec_dma_bits;
 412
 413        if (flag & CPF_FIRST)
 414        {
 415                /*
 416                 * First block. Have to allocate DMA and to reset the board
 417                 * before continuing.
 418                 */
 419
 420                spin_lock_irqsave(&devc->lock,flags);
 421                codec_dma_bits = sscape_read(devc, GA_CDCFG_REG);
 422
 423                if (devc->dma_allocated == 0)
 424                        devc->dma_allocated = 1;
 425
 426                spin_unlock_irqrestore(&devc->lock,flags);
 427
 428                sscape_write(devc, GA_HMCTL_REG, 
 429                        (temp = sscape_read(devc, GA_HMCTL_REG)) & 0x3f);        /*Reset */
 430
 431                for (timeout_val = 10000; timeout_val > 0; timeout_val--)
 432                        sscape_read(devc, GA_HMCTL_REG);        /* Delay */
 433
 434                /* Take board out of reset */
 435                sscape_write(devc, GA_HMCTL_REG,
 436                        (temp = sscape_read(devc, GA_HMCTL_REG)) | 0x80);
Show full sources