@@ -880,21 +880,26 @@ static struct device_type mci_attr_type = {
880
880
int edac_create_sysfs_mci_device (struct mem_ctl_info * mci ,
881
881
const struct attribute_group * * groups )
882
882
{
883
+ char * name ;
883
884
int i , err ;
884
885
885
886
/*
886
887
* The memory controller needs its own bus, in order to avoid
887
888
* namespace conflicts at /sys/bus/edac.
888
889
*/
889
- mci -> bus -> name = kasprintf (GFP_KERNEL , "mc%d" , mci -> mc_idx );
890
- if (!mci -> bus -> name )
890
+ name = kasprintf (GFP_KERNEL , "mc%d" , mci -> mc_idx );
891
+ if (!name )
891
892
return - ENOMEM ;
892
893
894
+ mci -> bus -> name = name ;
895
+
893
896
edac_dbg (0 , "creating bus %s\n" , mci -> bus -> name );
894
897
895
898
err = bus_register (mci -> bus );
896
- if (err < 0 )
897
- goto fail_free_name ;
899
+ if (err < 0 ) {
900
+ kfree (name );
901
+ return err ;
902
+ }
898
903
899
904
/* get the /sys/devices/system/edac subsys reference */
900
905
mci -> dev .type = & mci_attr_type ;
@@ -961,8 +966,8 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci,
961
966
device_unregister (& mci -> dev );
962
967
fail_unregister_bus :
963
968
bus_unregister (mci -> bus );
964
- fail_free_name :
965
- kfree ( mci -> bus -> name );
969
+ kfree ( name );
970
+
966
971
return err ;
967
972
}
968
973
@@ -993,10 +998,12 @@ void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci)
993
998
994
999
void edac_unregister_sysfs (struct mem_ctl_info * mci )
995
1000
{
1001
+ const char * name = mci -> bus -> name ;
1002
+
996
1003
edac_dbg (1 , "Unregistering device %s\n" , dev_name (& mci -> dev ));
997
1004
device_unregister (& mci -> dev );
998
1005
bus_unregister (mci -> bus );
999
- kfree (mci -> bus -> name );
1006
+ kfree (name );
1000
1007
}
1001
1008
1002
1009
static void mc_attr_release (struct device * dev )
0 commit comments