static int __devexit mcu_remove(struct i2c_client *client) { struct mcu *mcu = i2c_get_clientdata(client); int ret; if (glob_mcu == mcu) { ppc_md.power_off = NULL; glob_mcu = NULL; } ret = mcu_gpiochip_remove(mcu); if (ret) return ret; i2c_set_clientdata(client, NULL); kfree(mcu); return 0; }
static int mcu_remove(struct i2c_client *client) { struct mcu *mcu = i2c_get_clientdata(client); int ret; kthread_stop(shutdown_thread); device_remove_file(&client->dev, &dev_attr_status); if (glob_mcu == mcu) { ppc_md.power_off = NULL; glob_mcu = NULL; } ret = mcu_gpiochip_remove(mcu); if (ret) return ret; kfree(mcu); return 0; }