Showing error 1618

User: Jiri Slaby
Error type: Double Lock
Error type description: Some lock is locked twice unintentionally in a sequence
File location: drivers/char/specialix.c
Line in file: 268
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2013-03-03 21:03:48 UTC


Source:

 238}
 239
 240
 241/* Input Byte from CL CD186x register */
 242static inline unsigned char sx_in_off(struct specialix_board *bp,
 243                                unsigned short reg)
 244{
 245        bp->reg = reg;
 246        outb(reg, bp->base + SX_ADDR_REG);
 247        return inb(bp->base + SX_DATA_REG);
 248}
 249
 250
 251/* Output Byte to CL CD186x register */
 252static inline void sx_out_off(struct specialix_board  *bp,
 253                                unsigned short reg, unsigned char val)
 254{
 255        bp->reg = reg;
 256        outb(reg, bp->base + SX_ADDR_REG);
 257        outb(val, bp->base + SX_DATA_REG);
 258}
 259
 260
 261/* Wait for Channel Command Register ready */
 262static void sx_wait_CCR(struct specialix_board  *bp)
 263{
 264        unsigned long delay, flags;
 265        unsigned char ccr;
 266
 267        for (delay = SX_CCR_TIMEOUT; delay; delay--) {
 268                spin_lock_irqsave(&bp->lock, flags);
 269                ccr = sx_in(bp, CD186x_CCR);
 270                spin_unlock_irqrestore(&bp->lock, flags);
 271                if (!ccr)
 272                        return;
 273                udelay(1);
 274        }
 275
 276        printk(KERN_ERR "sx%d: Timeout waiting for CCR.\n", board_No(bp));
 277}
 278
Show full sources