static int node_remove(struct device *dev) { struct firedtv *fdtv = dev_get_drvdata(dev); fdtv_dvb_unregister(fdtv); spin_lock_irq(&node_list_lock); list_del(&fdtv->list); spin_unlock_irq(&node_list_lock); fdtv_unregister_rc(fdtv); kfree(fdtv); return 0; }
static int node_remove(struct device *dev) { struct firedtv *fdtv = dev->driver_data; fdtv_dvb_unregister(fdtv); spin_lock_irq(&node_list_lock); list_del(&fdtv->list); spin_unlock_irq(&node_list_lock); cancel_work_sync(&fdtv->remote_ctrl_work); fdtv_unregister_rc(fdtv); kfree(fdtv); return 0; }