staging: dgrp: check for a valid proc dir entry pointer
authorDevendra Naga <devendra.aaru@gmail.com>
Tue, 22 Jan 2013 08:38:17 +0000 (03:38 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Jan 2013 16:58:44 +0000 (08:58 -0800)
while proc_create fails, the register_proc_table can do a derefernce of the
null pointer causing to oops the system, instead check for a valid pointer
at register and unregister

Signed-off-by: Devendra Naga <devendra.aaru@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dgrp/dgrp_specproc.c

index c214078a89e91a650fac11e763c7746bb09e8ba7..e09fc9cf318b397cb39c15101b32caf7add0d128 100644 (file)
@@ -181,13 +181,13 @@ static struct dgrp_proc_entry dgrp_dpa_table[] = {
 
 void dgrp_unregister_proc(void)
 {
-       unregister_proc_table(dgrp_table, dgrp_proc_dir_entry);
        net_entry_pointer = NULL;
        mon_entry_pointer = NULL;
        dpa_entry_pointer = NULL;
        ports_entry_pointer = NULL;
 
        if (dgrp_proc_dir_entry) {
+               unregister_proc_table(dgrp_table, dgrp_proc_dir_entry);
                remove_proc_entry(dgrp_proc_dir_entry->name,
                                  dgrp_proc_dir_entry->parent);
                dgrp_proc_dir_entry = NULL;
@@ -231,6 +231,8 @@ static void register_proc_table(struct dgrp_proc_entry *table,
 
        if (table == NULL)
                return;
+       if (root == NULL)
+               return;
 
        for (; table->id; table++) {
                /* Can't do anything without a proc name. */