On 08/25, Dan Carpenter wrote: > Hello Konrad Zapalowicz, > > The patch ea6e9dea2e72: "staging: dgnc: Fix frame size is larger than > 1024B" from Aug 6, 2014, leads to the following static checker > warning: > > drivers/staging/dgnc/dgnc_tty.c:479 dgnc_sniff_nowait_nolock() > error: scheduling with locks held: 'spin_lock:ch_lock' > > drivers/staging/dgnc/dgnc_tty.c > 467 void dgnc_sniff_nowait_nolock(struct channel_t *ch, uchar *text, uchar *buf, int len) > 468 { > 469 struct timeval tv; > 470 int n; > 471 int r; > 472 int nbuf; > 473 int i; > 474 int tmpbuflen; > 475 char *tmpbuf; > 476 char *p; > 477 int too_much_data; > 478 > 479 tmpbuf = kzalloc(TMPBUFLEN, GFP_KERNEL); > ^^^^^^^^^^ > > This is a sleeping under spinlock bug. > > 480 if (!tmpbuf) > 481 return; > 482 p = tmpbuf; > > Normally the way to fix these is to just do a GFP_ATOMIC allocation but > sometimes you can shuffle the lock and the allocation around to avoid > the problem. Thanks for the info, I was not aware about this kind of consequences. I'll fix it in the upcoming series of patches for the dgnc driver. By the way, now I understand why someone has put there that local, huge table which was fixed by my patch. cheers, konrad > regards, > dan carpenter _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel