The patch titled vt: Honor the return value of device_create_file has been added to the -mm tree. Its filename is vt-honor-the-return-value-of-device_create_file.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: vt: Honor the return value of device_create_file From: "Antonino A. Daplas" <adaplas@xxxxxxxxx> Check the return value of device_create_file(). If return is 'fail', remove attributes by calling device_remove_file(). Signed-off-by: Antonino Daplas <adaplas@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/char/vt.c | 34 +++++++++++++++++++++++++++------- 1 files changed, 27 insertions(+), 7 deletions(-) diff -puN drivers/char/vt.c~vt-honor-the-return-value-of-device_create_file drivers/char/vt.c --- a/drivers/char/vt.c~vt-honor-the-return-value-of-device_create_file +++ a/drivers/char/vt.c @@ -106,7 +106,8 @@ #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 4 struct con_driver { const struct consw *con; @@ -3069,21 +3070,39 @@ static struct device_attribute device_at static 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; + } } /** @@ -3181,6 +3200,7 @@ int register_con_driver(const struct con } else { vtconsole_init_device(con_driver); } + err: release_console_sem(); module_put(owner); _ Patches currently in -mm which might be from adaplas@xxxxxxxxx are nvidiafb-use-generic-ddc-reading.patch rivafb-use-generic-ddc-reading.patch i810fb-use-generic-ddc-reading.patch savagefb-use-generic-ddc-reading.patch fbcon-remove-cursor-timer-if-unused.patch vt-honor-the-return-value-of-device_create_file.patch fbdev-honor-the-return-value-of-device_create_file.patch fbcon-honor-the-return-value-of-device_create_file.patch atyfb-honor-the-return-value-of-pci_register_driver.patch matroxfb-honor-the-return-value-of-pci_register_driver.patch nvidiafb-honor-the-return-value-of-pci_enable_device.patch i810fb-honor-the-return-value-of-pci_enable_device.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html