Showing error 536

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/bluetooth/bluecard_cs.c
Line in file: 323
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:19:02 UTC


Source:

293                                break;
294                        case PKT_BAUD_RATE_230400:
295                                baud_reg = REG_CONTROL_BAUD_RATE_230400;
296                                break;
297                        case PKT_BAUD_RATE_115200:
298                                baud_reg = REG_CONTROL_BAUD_RATE_115200;
299                                break;
300                        case PKT_BAUD_RATE_57600:
301                                /* Fall through... */
302                        default:
303                                baud_reg = REG_CONTROL_BAUD_RATE_57600;
304                                break;
305                        }
306
307                        /* Wait until the command reaches the baseband */
308                        prepare_to_wait(&wq, &wait, TASK_INTERRUPTIBLE);
309                        schedule_timeout(HZ/10);
310                        finish_wait(&wq, &wait);
311
312                        /* Set baud on baseband */
313                        info->ctrl_reg &= ~0x03;
314                        info->ctrl_reg |= baud_reg;
315                        outb(info->ctrl_reg, iobase + REG_CONTROL);
316
317                        /* Enable RTS */
318                        info->ctrl_reg &= ~REG_CONTROL_RTS;
319                        outb(info->ctrl_reg, iobase + REG_CONTROL);
320
321                        /* Wait before the next HCI packet can be send */
322                        prepare_to_wait(&wq, &wait, TASK_INTERRUPTIBLE);
323                        schedule_timeout(HZ);
324                        finish_wait(&wq, &wait);
325                }
326
327                if (len == skb->len) {
328                        kfree_skb(skb);
329                } else {
330                        skb_pull(skb, len);
331                        skb_queue_head(&(info->txq), skb);
332                }
333
Show full sources