Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging: dgnc: Remove unnecessary dgnc_Major_Control_Registered variable

The dgnc_Major_Control_Registered variable purpose was to act as a flag
to indicate if the character device has been successfully registered
into the kernel. This flag was later checked in the module cleanup
function to know if the character device needs to be deregistered.

However the {device,class}_destroy and unregister_chrdev functions may
be called with 'invalid' data perfectly fine. This means that this
variable is not needed and can safely be removed which is what this
commit does.

Signed-off-by: Konrad Zapalowicz <bergo.torino@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Konrad Zapalowicz and committed by
Greg Kroah-Hartman
ed7f92da 0b3a07ed

+15 -23
+15 -23
drivers/staging/dgnc/dgnc_driver.c
··· 96 96 /* 97 97 * Static vars. 98 98 */ 99 - static uint dgnc_Major_Control_Registered = FALSE; 100 - 101 99 static struct class *dgnc_class; 102 100 103 101 /* ··· 195 197 196 198 dgnc_remove_driver_sysfiles(&dgnc_driver); 197 199 198 - if (dgnc_Major_Control_Registered) { 199 - device_destroy(dgnc_class, MKDEV(dgnc_Major, 0)); 200 - class_destroy(dgnc_class); 201 - unregister_chrdev(dgnc_Major, "dgnc"); 202 - } 200 + device_destroy(dgnc_class, MKDEV(dgnc_Major, 0)); 201 + class_destroy(dgnc_class); 202 + unregister_chrdev(dgnc_Major, "dgnc"); 203 203 204 204 for (i = 0; i < dgnc_NumBoards; ++i) { 205 205 dgnc_remove_ports_sysfiles(dgnc_Board[i]); ··· 274 278 * Register our base character device into the kernel. 275 279 * This allows the download daemon to connect to the downld device 276 280 * before any of the boards are init'ed. 281 + * 282 + * Register management/dpa devices 277 283 */ 278 - if (!dgnc_Major_Control_Registered) { 279 - /* 280 - * Register management/dpa devices 281 - */ 282 - rc = register_chrdev(0, "dgnc", &dgnc_BoardFops); 283 - if (rc <= 0) { 284 - APR(("Can't register dgnc driver device (%d)\n", rc)); 285 - return -ENXIO; 286 - } 287 - dgnc_Major = rc; 288 - 289 - dgnc_class = class_create(THIS_MODULE, "dgnc_mgmt"); 290 - device_create(dgnc_class, NULL, 291 - MKDEV(dgnc_Major, 0), 292 - NULL, "dgnc_mgmt"); 293 - dgnc_Major_Control_Registered = TRUE; 284 + rc = register_chrdev(0, "dgnc", &dgnc_BoardFops); 285 + if (rc <= 0) { 286 + APR(("Can't register dgnc driver device (%d)\n", rc)); 287 + return -ENXIO; 294 288 } 289 + dgnc_Major = rc; 290 + 291 + dgnc_class = class_create(THIS_MODULE, "dgnc_mgmt"); 292 + device_create(dgnc_class, NULL, 293 + MKDEV(dgnc_Major, 0), 294 + NULL, "dgnc_mgmt"); 295 295 296 296 /* 297 297 * Init any global tty stuff.