Discovered a bug in the undermentioned function.
The expression (LP_F(offset) && LP_EXIST) must be
(LP_F(offset) & LP_EXIST).
void cleanup_module(void)
{
int offset;
if(MOD_IN_USE)
printk("lp: busy - remove delayed\n");
else {
unregister_chrdev(LP_MAJOR,"lp");
for (offset = 0; offset < LP_NO; offset++)
if(LP_F(offset) && LP_EXIST) <--BUG: && must be &
release_region(LP_B(offset),3);
}
}
This bug is in kernel versions up to v1.3.4
I Didn't test anything, just take a look at the lp code.
Ruud Cox
cox@tass.philips.com