vt: Honor the return value of device_create_file
Subsystems (2)
PATCH 2/8 vt: Honor the return value of device_create_file
Check the return value of device_create_file(). If return is 'fail', remove attributes by calling device_remove_file().
Signed-off-by Antonino Daplas <[email protected]>
---
drivers/char/vt.c | 34 +++++++++++++++++++++++++++------- 1 files changed, 27 insertions(+), 7 deletions(-)
drivers/char/vt.c +27 -7
@@ -106,7 +106,8 @@ #include <asm/uaccess.h>#define MAX_NR_CON_DRIVER 16#define CON_DRIVER_FLAG_MODULE 1 -#define CON_DRIVER_FLAG_INIT 2 +#define CON_DRIVER_FLAG_INIT 2 +#define CON_DRIVER_FLAG_ATTR 4struct con_driver {const struct consw *con;
@@ -3060,21 +3061,39 @@ static struct device_attribute device_atstatic int vtconsole_init_device (struct con_driver *con) { -int i; +int i, error =0 ;dev_set_drvdata (con->dev, con); -for (i =0 ; i <ARRAY_SIZE (device_attrs); i++) -device_create_file (con->dev, &device_attrs[i]); -return 0 ; + con->flag |=CON_DRIVER_FLAG_ATTR ; + +for (i =0 ; i <ARRAY_SIZE (device_attrs); i++) { + error =device_create_file (con->dev, &device_attrs[i]); + +if (error) +break ; + } + +if (error) { +while (--i >=0 ) +device_remove_file (con->dev, &device_attrs[i]); + + con->flag &= ~CON_DRIVER_FLAG_ATTR ; + } + +return error; }static void vtconsole_deinit_device (struct con_driver *con) {int i; -for (i =0 ; i <ARRAY_SIZE (device_attrs); i++) -device_remove_file (con->dev, &device_attrs[i]); +if (con->flag &CON_DRIVER_FLAG_ATTR ) { +for (i =0 ; i <ARRAY_SIZE (device_attrs); i++) +device_remove_file (con->dev, &device_attrs[i]); + + con->flag &= ~CON_DRIVER_FLAG_ATTR ; + } }/**
@@ -3172,6 +3191,7 @@ int register_con_driver(const struct con }else {vtconsole_init_device (con_driver); } + err:release_console_sem ();module_put (owner);
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642