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

[PATCH] dcdbas: dcdbas_pdev referenced after platform_device_unregister on exit

smi_data_buf_free() references dcdbas_pdev when calling
dma_free_coherent(). In dcdbas_exit(), smi_data_buf_free() is called after
platform_device_unregister(dcdbas_pdev).

This patch moves platform_device_unregister(dcdbas_pdev) after
smi_data_buf_free() in dcdbas_exit().

Signed-off-by: Doug Warzecha <Douglas_Warzecha@dell.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Doug Warzecha and committed by
Linus Torvalds
435a80f6 85a6cd03

+6 -2
+6 -2
drivers/firmware/dcdbas.c
··· 39 39 #include "dcdbas.h" 40 40 41 41 #define DRIVER_NAME "dcdbas" 42 - #define DRIVER_VERSION "5.6.0-1" 42 + #define DRIVER_VERSION "5.6.0-2" 43 43 #define DRIVER_DESCRIPTION "Dell Systems Management Base Driver" 44 44 45 45 static struct platform_device *dcdbas_pdev; ··· 581 581 */ 582 582 static void __exit dcdbas_exit(void) 583 583 { 584 - platform_device_unregister(dcdbas_pdev); 584 + /* 585 + * make sure functions that use dcdbas_pdev are called 586 + * before platform_device_unregister 587 + */ 585 588 unregister_reboot_notifier(&dcdbas_reboot_nb); 586 589 smi_data_buf_free(); 590 + platform_device_unregister(dcdbas_pdev); 587 591 } 588 592 589 593 module_init(dcdbas_init);