Browse Source

i7core_edac: fix panic when accessing sysfs files

The i7core_edac addrmatch_dev and chancounts_dev have sysfs files
associated with them.  The sysfs files, however, are coded so that the
parent device is is the mci device.  This is incorrect and the mci struct
should be obtained through the addrmatch_dev and chancounts_dev device's
private data field which is populated in i7core_create_sysfs_devices().

Signed-off-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Prarit Bhargava 12 years ago
parent
commit
42709efb3a
1 changed files with 3 additions and 3 deletions
  1. 3 3
      drivers/edac/i7core_edac.c

+ 3 - 3
drivers/edac/i7core_edac.c

@@ -816,7 +816,7 @@ static ssize_t i7core_inject_store_##param(			\
 	struct device_attribute *mattr,				\
 	struct device_attribute *mattr,				\
 	const char *data, size_t count)				\
 	const char *data, size_t count)				\
 {								\
 {								\
-	struct mem_ctl_info *mci = to_mci(dev);			\
+	struct mem_ctl_info *mci = dev_get_drvdata(dev);	\
 	struct i7core_pvt *pvt;					\
 	struct i7core_pvt *pvt;					\
 	long value;						\
 	long value;						\
 	int rc;							\
 	int rc;							\
@@ -845,7 +845,7 @@ static ssize_t i7core_inject_show_##param(			\
 	struct device_attribute *mattr,				\
 	struct device_attribute *mattr,				\
 	char *data)						\
 	char *data)						\
 {								\
 {								\
-	struct mem_ctl_info *mci = to_mci(dev);			\
+	struct mem_ctl_info *mci = dev_get_drvdata(dev);	\
 	struct i7core_pvt *pvt;					\
 	struct i7core_pvt *pvt;					\
 								\
 								\
 	pvt = mci->pvt_info;					\
 	pvt = mci->pvt_info;					\
@@ -1052,7 +1052,7 @@ static ssize_t i7core_show_counter_##param(			\
 	struct device_attribute *mattr,				\
 	struct device_attribute *mattr,				\
 	char *data)						\
 	char *data)						\
 {								\
 {								\
-	struct mem_ctl_info *mci = to_mci(dev);			\
+	struct mem_ctl_info *mci = dev_get_drvdata(dev);	\
 	struct i7core_pvt *pvt = mci->pvt_info;			\
 	struct i7core_pvt *pvt = mci->pvt_info;			\
 								\
 								\
 	edac_dbg(1, "\n");					\
 	edac_dbg(1, "\n");					\