Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Staging: SLICOSS: Free multicast list at driver exit

The multicast address list is allocated in slic_mcast_add_list() but
never freed.

Signed-off-by: Lior Dotan <liodot@gmail.com>


authored by

Lior Dotan and committed by
Greg Kroah-Hartman
786ed801 9b2126db

+8
+8
drivers/staging/slicoss/slicoss.c
··· 596 596 uint mmio_len = 0; 597 597 struct adapter *adapter = (struct adapter *) netdev_priv(dev); 598 598 struct sliccard *card; 599 + struct mcast_address *mcaddr, *mlist; 599 600 600 601 ASSERT(adapter); 601 602 DBG_MSG("slicoss: %s ENTER dev[%p] adapter[%p]\n", __func__, dev, ··· 616 615 DBG_MSG("slicoss: %s iounmap dev->base_addr[%x]\n", __func__, 617 616 (uint) dev->base_addr); 618 617 iounmap((void __iomem *)dev->base_addr); 618 + /* free multicast addresses */ 619 + mlist = adapter->mcastaddrs; 620 + while (mlist) { 621 + mcaddr = mlist; 622 + mlist = mlist->next; 623 + kfree(mcaddr); 624 + } 619 625 ASSERT(adapter->card); 620 626 card = adapter->card; 621 627 ASSERT(card->adapters_allocated);