Commit a22b7a60 authored by Sungbo Eo's avatar Sungbo Eo Committed by Hauke Mehrtens
Browse files

kernel: fix *-gpio-custom module unloading

Unloading and reloading the modules fails, as platform_device_put() does not
release resources fully.

root@OpenWrt:/# insmod i2c-gpio-custom bus0=0,18,0,5
[  196.860620] Custom GPIO-based I2C driver version 0.1.1
[  196.871162] ------------[ cut here ]------------
[  196.880517] WARNING: CPU: 0 PID: 1365 at fs/sysfs/dir.c:31 0x80112158
[  196.893431] sysfs: cannot create duplicate filename '/devices/platform/i2c-gpio.0'
...
[  197.513200] kobject_add_internal failed for i2c-gpio.0 with -EEXIST, don't try to register things with the same name in the same directory.

This patch fixes it by replacing platform_device_put() to
platform_device_unregister().

Fixes: da774085 ("i2c-gpio-custom: minor bugfix")
Fixes: 3bc81edc

 ("package: fix w1-gpio-custom package (closes #6770)")
Signed-off-by: default avatarSungbo Eo <mans0n@gorani.run>
parent 432ec292
...@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk ...@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=i2c-gpio-custom PKG_NAME:=i2c-gpio-custom
PKG_RELEASE:=2 PKG_RELEASE:=3
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
#define DRV_NAME "i2c-gpio-custom" #define DRV_NAME "i2c-gpio-custom"
#define DRV_DESC "Custom GPIO-based I2C driver" #define DRV_DESC "Custom GPIO-based I2C driver"
#define DRV_VERSION "0.1.1" #define DRV_VERSION "0.1.2"
#define PFX DRV_NAME ": " #define PFX DRV_NAME ": "
...@@ -101,7 +101,7 @@ static void i2c_gpio_custom_cleanup(void) ...@@ -101,7 +101,7 @@ static void i2c_gpio_custom_cleanup(void)
for (i = 0; i < nr_devices; i++) for (i = 0; i < nr_devices; i++)
if (devices[i]) if (devices[i])
platform_device_put(devices[i]); platform_device_unregister(devices[i]);
} }
static int __init i2c_gpio_custom_add_one(unsigned int id, unsigned int *params) static int __init i2c_gpio_custom_add_one(unsigned int id, unsigned int *params)
......
...@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk ...@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=w1-gpio-custom PKG_NAME:=w1-gpio-custom
PKG_RELEASE:=3 PKG_RELEASE:=4
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
#define DRV_NAME "w1-gpio-custom" #define DRV_NAME "w1-gpio-custom"
#define DRV_DESC "Custom GPIO-based W1 driver" #define DRV_DESC "Custom GPIO-based W1 driver"
#define DRV_VERSION "0.1.1" #define DRV_VERSION "0.1.2"
#define PFX DRV_NAME ": " #define PFX DRV_NAME ": "
...@@ -86,7 +86,7 @@ static void w1_gpio_custom_cleanup(void) ...@@ -86,7 +86,7 @@ static void w1_gpio_custom_cleanup(void)
for (i = 0; i < nr_devices; i++) for (i = 0; i < nr_devices; i++)
if (devices[i]) if (devices[i])
platform_device_put(devices[i]); platform_device_unregister(devices[i]);
} }
static int __init w1_gpio_custom_add_one(unsigned int id, unsigned int *params) static int __init w1_gpio_custom_add_one(unsigned int id, unsigned int *params)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment