Showing error 541

User: Jiri Slaby
Error type: Calling function from invalid context
Error type description: Some function is called at inappropriate place like sleep inside critical sections or interrupt handlers
File location: drivers/net/qlge/qlge_main.c
Line in file: 134
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:19:02 UTC


Source:

 104        case SEM_MAC_ADDR_MASK:
 105                sem_bits = SEM_SET << SEM_MAC_ADDR_SHIFT;
 106                break;
 107        case SEM_FLASH_MASK:
 108                sem_bits = SEM_SET << SEM_FLASH_SHIFT;
 109                break;
 110        case SEM_PROBE_MASK:
 111                sem_bits = SEM_SET << SEM_PROBE_SHIFT;
 112                break;
 113        case SEM_RT_IDX_MASK:
 114                sem_bits = SEM_SET << SEM_RT_IDX_SHIFT;
 115                break;
 116        case SEM_PROC_REG_MASK:
 117                sem_bits = SEM_SET << SEM_PROC_REG_SHIFT;
 118                break;
 119        default:
 120                QPRINTK(qdev, PROBE, ALERT, "Bad Semaphore mask!.\n");
 121                return -EINVAL;
 122        }
 123
 124        ql_write32(qdev, SEM, sem_bits | sem_mask);
 125        return !(ql_read32(qdev, SEM) & sem_bits);
 126}
 127
 128int ql_sem_spinlock(struct ql_adapter *qdev, u32 sem_mask)
 129{
 130        unsigned int seconds = 3;
 131        do {
 132                if (!ql_sem_trylock(qdev, sem_mask))
 133                        return 0;
 134                ssleep(1);
 135        } while (--seconds);
 136        return -ETIMEDOUT;
 137}
 138
 139void ql_sem_unlock(struct ql_adapter *qdev, u32 sem_mask)
 140{
 141        ql_write32(qdev, SEM, sem_mask);
 142        ql_read32(qdev, SEM);        /* flush */
 143}
 144
Show full sources