Skip to content

Commit a4dd4fc

Browse files
saubhikdavem330
authored andcommitted
net: appletalk: cops: Fix data race in cops_probe1
In cops_probe1(), there is a write to dev->base_addr after requesting an interrupt line and registering the interrupt handler cops_interrupt(). The handler might be called in parallel to handle an interrupt. cops_interrupt() tries to read dev->base_addr leading to a potential data race. So write to dev->base_addr before calling request_irq(). Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Saubhik Mukherjee <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 93c5d74 commit a4dd4fc

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/net/appletalk/cops.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,15 +327,15 @@ static int __init cops_probe1(struct net_device *dev, int ioaddr)
327327
break;
328328
}
329329

330+
dev->base_addr = ioaddr;
331+
330332
/* Reserve any actual interrupt. */
331333
if (dev->irq) {
332334
retval = request_irq(dev->irq, cops_interrupt, 0, dev->name, dev);
333335
if (retval)
334336
goto err_out;
335337
}
336338

337-
dev->base_addr = ioaddr;
338-
339339
lp = netdev_priv(dev);
340340
spin_lock_init(&lp->lock);
341341

0 commit comments

Comments
 (0)