@@ -2864,7 +2864,8 @@ static int megasas_mgmt_compat_ioctl_fw(struct file *file, unsigned long arg)
28642864 int i ;
28652865 int error = 0 ;
28662866
2867- clear_user (ioc , sizeof (* ioc ));
2867+ if (clear_user (ioc , sizeof (* ioc )))
2868+ return - EFAULT ;
28682869
28692870 if (copy_in_user (& ioc -> host_no , & cioc -> host_no , sizeof (u16 )) ||
28702871 copy_in_user (& ioc -> sgl_off , & cioc -> sgl_off , sizeof (u32 )) ||
@@ -3010,28 +3011,45 @@ static int __init megasas_init(void)
30103011
30113012 if (rval ) {
30123013 printk (KERN_DEBUG "megasas: PCI hotplug regisration failed \n" );
3013- unregister_chrdev (megasas_mgmt_majorno , "megaraid_sas_ioctl" );
3014- }
3015-
3016- driver_create_file (& megasas_pci_driver .driver , & driver_attr_version );
3017- driver_create_file (& megasas_pci_driver .driver ,
3018- & driver_attr_release_date );
3019- driver_create_file (& megasas_pci_driver .driver ,
3020- & driver_attr_dbg_lvl );
3014+ goto err_pcidrv ;
3015+ }
3016+
3017+ rval = driver_create_file (& megasas_pci_driver .driver ,
3018+ & driver_attr_version );
3019+ if (rval )
3020+ goto err_dcf_attr_ver ;
3021+ rval = driver_create_file (& megasas_pci_driver .driver ,
3022+ & driver_attr_release_date );
3023+ if (rval )
3024+ goto err_dcf_rel_date ;
3025+ rval = driver_create_file (& megasas_pci_driver .driver ,
3026+ & driver_attr_dbg_lvl );
3027+ if (rval )
3028+ goto err_dcf_dbg_lvl ;
30213029
30223030 return rval ;
3031+ err_dcf_dbg_lvl :
3032+ driver_remove_file (& megasas_pci_driver .driver ,
3033+ & driver_attr_release_date );
3034+ err_dcf_rel_date :
3035+ driver_remove_file (& megasas_pci_driver .driver , & driver_attr_version );
3036+ err_dcf_attr_ver :
3037+ pci_unregister_driver (& megasas_pci_driver );
3038+ err_pcidrv :
3039+ unregister_chrdev (megasas_mgmt_majorno , "megaraid_sas_ioctl" );
3040+ return rval ;
30233041}
30243042
30253043/**
30263044 * megasas_exit - Driver unload entry point
30273045 */
30283046static void __exit megasas_exit (void )
30293047{
3030- driver_remove_file (& megasas_pci_driver .driver , & driver_attr_version );
3031- driver_remove_file (& megasas_pci_driver .driver ,
3032- & driver_attr_release_date );
30333048 driver_remove_file (& megasas_pci_driver .driver ,
30343049 & driver_attr_dbg_lvl );
3050+ driver_remove_file (& megasas_pci_driver .driver ,
3051+ & driver_attr_release_date );
3052+ driver_remove_file (& megasas_pci_driver .driver , & driver_attr_version );
30353053
30363054 pci_unregister_driver (& megasas_pci_driver );
30373055 unregister_chrdev (megasas_mgmt_majorno , "megaraid_sas_ioctl" );
0 commit comments