2007-10-17 19:28:48

by Adrian Bunk

[permalink] [raw]
Subject: [2.6 patch] hwmon/ibmpex.c: fix NULL dereference

Don't dereference "data" when we know for sure it's NULL.

Spotted by the Coverity checker.

Signed-off-by: Adrian Bunk <[email protected]>

---
66bec2ef5c6d55fc30ef6ac5bb97fdfcfaf394f2
diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
index c462824..e14ce3d 100644
--- a/drivers/hwmon/ibmpex.c
+++ b/drivers/hwmon/ibmpex.c
@@ -457,7 +457,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data) {
printk(KERN_ERR DRVNAME ": Insufficient memory for BMC "
- "interface %d.\n", data->interface);
+ "interface.\n");
return;
}



2007-10-17 19:40:18

by Nish Aravamudan

[permalink] [raw]
Subject: Re: [2.6 patch] hwmon/ibmpex.c: fix NULL dereference

On 10/17/07, Adrian Bunk <[email protected]> wrote:
> Don't dereference "data" when we know for sure it's NULL.
>
> Spotted by the Coverity checker.
>
> Signed-off-by: Adrian Bunk <[email protected]>
>
> ---
> 66bec2ef5c6d55fc30ef6ac5bb97fdfcfaf394f2
> diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
> index c462824..e14ce3d 100644
> --- a/drivers/hwmon/ibmpex.c
> +++ b/drivers/hwmon/ibmpex.c
> @@ -457,7 +457,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> data = kzalloc(sizeof(*data), GFP_KERNEL);
> if (!data) {
> printk(KERN_ERR DRVNAME ": Insufficient memory for BMC "
> - "interface %d.\n", data->interface);
> + "interface.\n");

Hrm but what data->interface would be is specified by the iface
parameter? Just spit that out instead?

Thanks,
Nish

2007-10-17 19:50:30

by Adrian Bunk

[permalink] [raw]
Subject: Re: [2.6 patch] hwmon/ibmpex.c: fix NULL dereference

On Wed, Oct 17, 2007 at 12:39:59PM -0700, Nish Aravamudan wrote:
> On 10/17/07, Adrian Bunk <[email protected]> wrote:
> > Don't dereference "data" when we know for sure it's NULL.
> >
> > Spotted by the Coverity checker.
> >
> > Signed-off-by: Adrian Bunk <[email protected]>
> >
> > ---
> > 66bec2ef5c6d55fc30ef6ac5bb97fdfcfaf394f2
> > diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
> > index c462824..e14ce3d 100644
> > --- a/drivers/hwmon/ibmpex.c
> > +++ b/drivers/hwmon/ibmpex.c
> > @@ -457,7 +457,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> > data = kzalloc(sizeof(*data), GFP_KERNEL);
> > if (!data) {
> > printk(KERN_ERR DRVNAME ": Insufficient memory for BMC "
> > - "interface %d.\n", data->interface);
> > + "interface.\n");
>
> Hrm but what data->interface would be is specified by the iface
> parameter? Just spit that out instead?

This is only a symptom of the problem that kzalloc() failed, and when
you are getting into such a situation here you have bigger problems -
and these are not related to this driver.

Feel free to send a different patch, but IMHO "Insufficient memory"
alone is enough information in this case.

> Thanks,
> Nish

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2007-10-17 20:59:04

by Jean Delvare

[permalink] [raw]
Subject: Re: [lm-sensors] [2.6 patch] hwmon/ibmpex.c: fix NULL dereference

On Wed, 17 Oct 2007 21:29:02 +0200, Adrian Bunk wrote:
> Don't dereference "data" when we know for sure it's NULL.
>
> Spotted by the Coverity checker.
>
> Signed-off-by: Adrian Bunk <[email protected]>
>
> ---
> 66bec2ef5c6d55fc30ef6ac5bb97fdfcfaf394f2
> diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
> index c462824..e14ce3d 100644
> --- a/drivers/hwmon/ibmpex.c
> +++ b/drivers/hwmon/ibmpex.c
> @@ -457,7 +457,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> data = kzalloc(sizeof(*data), GFP_KERNEL);
> if (!data) {
> printk(KERN_ERR DRVNAME ": Insufficient memory for BMC "
> - "interface %d.\n", data->interface);
> + "interface.\n");
> return;
> }

As a side note, dev_err() should be used instead of printk here, and
possibly in other places. Darrick, could you please send a patch fixing
this?

Thanks,
--
Jean Delvare

2007-10-17 21:10:46

by djwong

[permalink] [raw]
Subject: Re: [2.6 patch] hwmon/ibmpex.c: fix NULL dereference

On Wed, Oct 17, 2007 at 09:29:02PM +0200, Adrian Bunk wrote:
> Don't dereference "data" when we know for sure it's NULL.
>
> Spotted by the Coverity checker.
>
> Signed-off-by: Adrian Bunk <[email protected]>
>
> ---
> 66bec2ef5c6d55fc30ef6ac5bb97fdfcfaf394f2
> diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
> index c462824..e14ce3d 100644
> --- a/drivers/hwmon/ibmpex.c
> +++ b/drivers/hwmon/ibmpex.c
> @@ -457,7 +457,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> data = kzalloc(sizeof(*data), GFP_KERNEL);
> if (!data) {
> printk(KERN_ERR DRVNAME ": Insufficient memory for BMC "
> - "interface %d.\n", data->interface);
> + "interface.\n");
> return;
> }
>
>
ACK.

--D

2007-10-17 22:15:46

by djwong

[permalink] [raw]
Subject: [PATCH] ibmpex: Change printk to dev_{info,err} macros

Clean up printk use in ibmpex to use dev_err/dev_info macros and reword
some of the messages to be a bit more clear.

Signed-off-by: Darrick J. Wong <[email protected]>
---

drivers/hwmon/ibmpex.c | 48 +++++++++++++++++++++++-------------------------
1 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
index c462824..3c8278b 100644
--- a/drivers/hwmon/ibmpex.c
+++ b/drivers/hwmon/ibmpex.c
@@ -140,10 +140,10 @@ static int ibmpex_send_message(struct ibmpex_bmc_data *data)

return 0;
out1:
- printk(KERN_ERR "%s: request_settime=%x\n", __FUNCTION__, err);
+ dev_err(data->bmc_device, "request_settime=%x\n", err);
return err;
out:
- printk(KERN_ERR "%s: validate_addr=%x\n", __FUNCTION__, err);
+ dev_err(data->bmc_device, "validate_addr=%x\n", err);
return err;
}

@@ -161,14 +161,14 @@ static int ibmpex_ver_check(struct ibmpex_bmc_data *data)
data->sensor_major = data->rx_msg_data[0];
data->sensor_minor = data->rx_msg_data[1];

- printk(KERN_INFO DRVNAME ": Found BMC with sensor interface "
- "v%d.%d %d-%02d-%02d on interface %d\n",
- data->sensor_major,
- data->sensor_minor,
- extract_value(data->rx_msg_data, 2),
- data->rx_msg_data[4],
- data->rx_msg_data[5],
- data->interface);
+ dev_info(data->bmc_device, "Found BMC with sensor interface "
+ "v%d.%d %d-%02d-%02d on interface %d\n",
+ data->sensor_major,
+ data->sensor_minor,
+ extract_value(data->rx_msg_data, 2),
+ data->rx_msg_data[4],
+ data->rx_msg_data[5],
+ data->interface);

return 0;
}
@@ -212,8 +212,8 @@ static int ibmpex_query_sensor_data(struct ibmpex_bmc_data *data, int sensor)
wait_for_completion(&data->read_complete);

if (data->rx_result || data->rx_msg_len < 26) {
- printk(KERN_ERR "Error reading sensor %d, please check.\n",
- sensor);
+ dev_err(data->bmc_device, "Error reading sensor %d.\n",
+ sensor);
return -ENOENT;
}

@@ -456,8 +456,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)

data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data) {
- printk(KERN_ERR DRVNAME ": Insufficient memory for BMC "
- "interface %d.\n", data->interface);
+ dev_err(dev, "Insufficient memory for BMC interface.\n");
return;
}

@@ -471,9 +470,8 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
err = ipmi_create_user(data->interface, &driver_data.ipmi_hndlrs,
data, &data->user);
if (err < 0) {
- printk(KERN_ERR DRVNAME ": Error, unable to register user with "
- "ipmi interface %d\n",
- data->interface);
+ dev_err(dev, "Unable to register user with IPMI "
+ "interface %d\n", data->interface);
goto out;
}

@@ -495,9 +493,9 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
data->hwmon_dev = hwmon_device_register(data->bmc_device);

if (IS_ERR(data->hwmon_dev)) {
- printk(KERN_ERR DRVNAME ": Error, unable to register hwmon "
- "class device for interface %d\n",
- data->interface);
+ dev_err(data->bmc_device, "Unable to register hwmon "
+ "device for IPMI interface %d\n",
+ data->interface);
goto out_user;
}

@@ -508,7 +506,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
/* Now go find all the sensors */
err = ibmpex_find_sensors(data);
if (err) {
- printk(KERN_ERR "Error %d allocating memory\n", err);
+ dev_err(data->bmc_device, "Error %d allocating memory\n", err);
goto out_register;
}

@@ -561,10 +559,10 @@ static void ibmpex_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data)
struct ibmpex_bmc_data *data = (struct ibmpex_bmc_data *)user_msg_data;

if (msg->msgid != data->tx_msgid) {
- printk(KERN_ERR "Received msgid (%02x) and transmitted "
- "msgid (%02x) mismatch!\n",
- (int)msg->msgid,
- (int)data->tx_msgid);
+ dev_err(data->bmc_device, "Mismatch between received msgid "
+ "(%02x) and transmitted msgid (%02x)!\n",
+ (int)msg->msgid,
+ (int)data->tx_msgid);
ipmi_free_recv_msg(msg);
return;
}

2007-10-18 13:49:58

by Mark M. Hoffman

[permalink] [raw]
Subject: Re: [2.6 patch] hwmon/ibmpex.c: fix NULL dereference

Hi:

* Adrian Bunk <[email protected]> [2007-10-17 21:29:02 +0200]:
> Don't dereference "data" when we know for sure it's NULL.
>
> Spotted by the Coverity checker.
>
> Signed-off-by: Adrian Bunk <[email protected]>
>
> ---
> 66bec2ef5c6d55fc30ef6ac5bb97fdfcfaf394f2
> diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
> index c462824..e14ce3d 100644
> --- a/drivers/hwmon/ibmpex.c
> +++ b/drivers/hwmon/ibmpex.c
> @@ -457,7 +457,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> data = kzalloc(sizeof(*data), GFP_KERNEL);
> if (!data) {
> printk(KERN_ERR DRVNAME ": Insufficient memory for BMC "
> - "interface %d.\n", data->interface);
> + "interface.\n");
> return;
> }
>

Applied to hwmon-2.6.git/testing, thanks.

--
Mark M. Hoffman
[email protected]

2007-10-19 08:54:20

by Jean Delvare

[permalink] [raw]
Subject: Re: [PATCH] ibmpex: Change printk to dev_{info,err} macros

Hi Darrick,

On Wed, 17 Oct 2007 15:15:03 -0700, Darrick J. Wong wrote:
> Clean up printk use in ibmpex to use dev_err/dev_info macros and reword
> some of the messages to be a bit more clear.
>
> Signed-off-by: Darrick J. Wong <[email protected]>
> ---
>
> drivers/hwmon/ibmpex.c | 48 +++++++++++++++++++++++-------------------------
> 1 files changed, 23 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
> index c462824..3c8278b 100644
> --- a/drivers/hwmon/ibmpex.c
> +++ b/drivers/hwmon/ibmpex.c
> @@ -140,10 +140,10 @@ static int ibmpex_send_message(struct ibmpex_bmc_data *data)
>
> return 0;
> out1:
> - printk(KERN_ERR "%s: request_settime=%x\n", __FUNCTION__, err);
> + dev_err(data->bmc_device, "request_settime=%x\n", err);
> return err;
> out:
> - printk(KERN_ERR "%s: validate_addr=%x\n", __FUNCTION__, err);
> + dev_err(data->bmc_device, "validate_addr=%x\n", err);
> return err;
> }
>
> @@ -161,14 +161,14 @@ static int ibmpex_ver_check(struct ibmpex_bmc_data *data)
> data->sensor_major = data->rx_msg_data[0];
> data->sensor_minor = data->rx_msg_data[1];
>
> - printk(KERN_INFO DRVNAME ": Found BMC with sensor interface "
> - "v%d.%d %d-%02d-%02d on interface %d\n",
> - data->sensor_major,
> - data->sensor_minor,
> - extract_value(data->rx_msg_data, 2),
> - data->rx_msg_data[4],
> - data->rx_msg_data[5],
> - data->interface);
> + dev_info(data->bmc_device, "Found BMC with sensor interface "
> + "v%d.%d %d-%02d-%02d on interface %d\n",
> + data->sensor_major,
> + data->sensor_minor,
> + extract_value(data->rx_msg_data, 2),
> + data->rx_msg_data[4],
> + data->rx_msg_data[5],
> + data->interface);
>
> return 0;
> }
> @@ -212,8 +212,8 @@ static int ibmpex_query_sensor_data(struct ibmpex_bmc_data *data, int sensor)
> wait_for_completion(&data->read_complete);
>
> if (data->rx_result || data->rx_msg_len < 26) {
> - printk(KERN_ERR "Error reading sensor %d, please check.\n",
> - sensor);
> + dev_err(data->bmc_device, "Error reading sensor %d.\n",
> + sensor);
> return -ENOENT;
> }
>
> @@ -456,8 +456,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
>
> data = kzalloc(sizeof(*data), GFP_KERNEL);
> if (!data) {
> - printk(KERN_ERR DRVNAME ": Insufficient memory for BMC "
> - "interface %d.\n", data->interface);
> + dev_err(dev, "Insufficient memory for BMC interface.\n");
> return;
> }
>
> @@ -471,9 +470,8 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> err = ipmi_create_user(data->interface, &driver_data.ipmi_hndlrs,
> data, &data->user);
> if (err < 0) {
> - printk(KERN_ERR DRVNAME ": Error, unable to register user with "
> - "ipmi interface %d\n",
> - data->interface);
> + dev_err(dev, "Unable to register user with IPMI "
> + "interface %d\n", data->interface);
> goto out;
> }
>
> @@ -495,9 +493,9 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> data->hwmon_dev = hwmon_device_register(data->bmc_device);
>
> if (IS_ERR(data->hwmon_dev)) {
> - printk(KERN_ERR DRVNAME ": Error, unable to register hwmon "
> - "class device for interface %d\n",
> - data->interface);
> + dev_err(data->bmc_device, "Unable to register hwmon "
> + "device for IPMI interface %d\n",
> + data->interface);
> goto out_user;
> }
>
> @@ -508,7 +506,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> /* Now go find all the sensors */
> err = ibmpex_find_sensors(data);
> if (err) {
> - printk(KERN_ERR "Error %d allocating memory\n", err);
> + dev_err(data->bmc_device, "Error %d allocating memory\n", err);

This message might be misleading, as there are other reasons why
ibmpex_find_sensors() can fail.

> goto out_register;
> }
>
> @@ -561,10 +559,10 @@ static void ibmpex_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data)
> struct ibmpex_bmc_data *data = (struct ibmpex_bmc_data *)user_msg_data;
>
> if (msg->msgid != data->tx_msgid) {
> - printk(KERN_ERR "Received msgid (%02x) and transmitted "
> - "msgid (%02x) mismatch!\n",
> - (int)msg->msgid,
> - (int)data->tx_msgid);
> + dev_err(data->bmc_device, "Mismatch between received msgid "
> + "(%02x) and transmitted msgid (%02x)!\n",
> + (int)msg->msgid,
> + (int)data->tx_msgid);
> ipmi_free_recv_msg(msg);
> return;
> }

Other than that, the patch looks OK:

Acked-by: Jean Delvare <[email protected]>

--
Jean Delvare

2007-10-19 23:35:50

by djwong

[permalink] [raw]
Subject: [PATCH v2] ibmpex: Change printk to dev_{info,err} macros

Ok, I'll change the message to be a bit more accurate.
---
Clean up printk use in ibmpex.

Signed-off-by: Darrick J. Wong <[email protected]>
---

drivers/hwmon/ibmpex.c | 48 +++++++++++++++++++++++-------------------------
1 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
index c462824..9c9cdb0 100644
--- a/drivers/hwmon/ibmpex.c
+++ b/drivers/hwmon/ibmpex.c
@@ -140,10 +140,10 @@ static int ibmpex_send_message(struct ibmpex_bmc_data *data)

return 0;
out1:
- printk(KERN_ERR "%s: request_settime=%x\n", __FUNCTION__, err);
+ dev_err(data->bmc_device, "request_settime=%x\n", err);
return err;
out:
- printk(KERN_ERR "%s: validate_addr=%x\n", __FUNCTION__, err);
+ dev_err(data->bmc_device, "validate_addr=%x\n", err);
return err;
}

@@ -161,14 +161,14 @@ static int ibmpex_ver_check(struct ibmpex_bmc_data *data)
data->sensor_major = data->rx_msg_data[0];
data->sensor_minor = data->rx_msg_data[1];

- printk(KERN_INFO DRVNAME ": Found BMC with sensor interface "
- "v%d.%d %d-%02d-%02d on interface %d\n",
- data->sensor_major,
- data->sensor_minor,
- extract_value(data->rx_msg_data, 2),
- data->rx_msg_data[4],
- data->rx_msg_data[5],
- data->interface);
+ dev_info(data->bmc_device, "Found BMC with sensor interface "
+ "v%d.%d %d-%02d-%02d on interface %d\n",
+ data->sensor_major,
+ data->sensor_minor,
+ extract_value(data->rx_msg_data, 2),
+ data->rx_msg_data[4],
+ data->rx_msg_data[5],
+ data->interface);

return 0;
}
@@ -212,8 +212,8 @@ static int ibmpex_query_sensor_data(struct ibmpex_bmc_data *data, int sensor)
wait_for_completion(&data->read_complete);

if (data->rx_result || data->rx_msg_len < 26) {
- printk(KERN_ERR "Error reading sensor %d, please check.\n",
- sensor);
+ dev_err(data->bmc_device, "Error reading sensor %d.\n",
+ sensor);
return -ENOENT;
}

@@ -456,8 +456,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)

data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data) {
- printk(KERN_ERR DRVNAME ": Insufficient memory for BMC "
- "interface %d.\n", data->interface);
+ dev_err(dev, "Insufficient memory for BMC interface.\n");
return;
}

@@ -471,9 +470,8 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
err = ipmi_create_user(data->interface, &driver_data.ipmi_hndlrs,
data, &data->user);
if (err < 0) {
- printk(KERN_ERR DRVNAME ": Error, unable to register user with "
- "ipmi interface %d\n",
- data->interface);
+ dev_err(dev, "Unable to register user with IPMI "
+ "interface %d\n", data->interface);
goto out;
}

@@ -495,9 +493,9 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
data->hwmon_dev = hwmon_device_register(data->bmc_device);

if (IS_ERR(data->hwmon_dev)) {
- printk(KERN_ERR DRVNAME ": Error, unable to register hwmon "
- "class device for interface %d\n",
- data->interface);
+ dev_err(data->bmc_device, "Unable to register hwmon "
+ "device for IPMI interface %d\n",
+ data->interface);
goto out_user;
}

@@ -508,7 +506,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
/* Now go find all the sensors */
err = ibmpex_find_sensors(data);
if (err) {
- printk(KERN_ERR "Error %d allocating memory\n", err);
+ dev_err(data->bmc_device, "Error %d finding sensors\n", err);
goto out_register;
}

@@ -561,10 +559,10 @@ static void ibmpex_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data)
struct ibmpex_bmc_data *data = (struct ibmpex_bmc_data *)user_msg_data;

if (msg->msgid != data->tx_msgid) {
- printk(KERN_ERR "Received msgid (%02x) and transmitted "
- "msgid (%02x) mismatch!\n",
- (int)msg->msgid,
- (int)data->tx_msgid);
+ dev_err(data->bmc_device, "Mismatch between received msgid "
+ "(%02x) and transmitted msgid (%02x)!\n",
+ (int)msg->msgid,
+ (int)data->tx_msgid);
ipmi_free_recv_msg(msg);
return;
}

2007-10-21 01:37:35

by Jean Delvare

[permalink] [raw]
Subject: Re: [PATCH v2] ibmpex: Change printk to dev_{info,err} macros

On Fri, 19 Oct 2007 16:35:07 -0700, Darrick J. Wong wrote:
> Ok, I'll change the message to be a bit more accurate.
> ---
> Clean up printk use in ibmpex.
>
> Signed-off-by: Darrick J. Wong <[email protected]>
> ---

Acked-by: Jean Delvare <[email protected]>

>
> drivers/hwmon/ibmpex.c | 48 +++++++++++++++++++++++-------------------------
> 1 files changed, 23 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
> index c462824..9c9cdb0 100644
> --- a/drivers/hwmon/ibmpex.c
> +++ b/drivers/hwmon/ibmpex.c
> @@ -140,10 +140,10 @@ static int ibmpex_send_message(struct ibmpex_bmc_data *data)
>
> return 0;
> out1:
> - printk(KERN_ERR "%s: request_settime=%x\n", __FUNCTION__, err);
> + dev_err(data->bmc_device, "request_settime=%x\n", err);
> return err;
> out:
> - printk(KERN_ERR "%s: validate_addr=%x\n", __FUNCTION__, err);
> + dev_err(data->bmc_device, "validate_addr=%x\n", err);
> return err;
> }
>
> @@ -161,14 +161,14 @@ static int ibmpex_ver_check(struct ibmpex_bmc_data *data)
> data->sensor_major = data->rx_msg_data[0];
> data->sensor_minor = data->rx_msg_data[1];
>
> - printk(KERN_INFO DRVNAME ": Found BMC with sensor interface "
> - "v%d.%d %d-%02d-%02d on interface %d\n",
> - data->sensor_major,
> - data->sensor_minor,
> - extract_value(data->rx_msg_data, 2),
> - data->rx_msg_data[4],
> - data->rx_msg_data[5],
> - data->interface);
> + dev_info(data->bmc_device, "Found BMC with sensor interface "
> + "v%d.%d %d-%02d-%02d on interface %d\n",
> + data->sensor_major,
> + data->sensor_minor,
> + extract_value(data->rx_msg_data, 2),
> + data->rx_msg_data[4],
> + data->rx_msg_data[5],
> + data->interface);
>
> return 0;
> }
> @@ -212,8 +212,8 @@ static int ibmpex_query_sensor_data(struct ibmpex_bmc_data *data, int sensor)
> wait_for_completion(&data->read_complete);
>
> if (data->rx_result || data->rx_msg_len < 26) {
> - printk(KERN_ERR "Error reading sensor %d, please check.\n",
> - sensor);
> + dev_err(data->bmc_device, "Error reading sensor %d.\n",
> + sensor);
> return -ENOENT;
> }
>
> @@ -456,8 +456,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
>
> data = kzalloc(sizeof(*data), GFP_KERNEL);
> if (!data) {
> - printk(KERN_ERR DRVNAME ": Insufficient memory for BMC "
> - "interface %d.\n", data->interface);
> + dev_err(dev, "Insufficient memory for BMC interface.\n");
> return;
> }
>
> @@ -471,9 +470,8 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> err = ipmi_create_user(data->interface, &driver_data.ipmi_hndlrs,
> data, &data->user);
> if (err < 0) {
> - printk(KERN_ERR DRVNAME ": Error, unable to register user with "
> - "ipmi interface %d\n",
> - data->interface);
> + dev_err(dev, "Unable to register user with IPMI "
> + "interface %d\n", data->interface);
> goto out;
> }
>
> @@ -495,9 +493,9 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> data->hwmon_dev = hwmon_device_register(data->bmc_device);
>
> if (IS_ERR(data->hwmon_dev)) {
> - printk(KERN_ERR DRVNAME ": Error, unable to register hwmon "
> - "class device for interface %d\n",
> - data->interface);
> + dev_err(data->bmc_device, "Unable to register hwmon "
> + "device for IPMI interface %d\n",
> + data->interface);
> goto out_user;
> }
>
> @@ -508,7 +506,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev)
> /* Now go find all the sensors */
> err = ibmpex_find_sensors(data);
> if (err) {
> - printk(KERN_ERR "Error %d allocating memory\n", err);
> + dev_err(data->bmc_device, "Error %d finding sensors\n", err);
> goto out_register;
> }
>
> @@ -561,10 +559,10 @@ static void ibmpex_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data)
> struct ibmpex_bmc_data *data = (struct ibmpex_bmc_data *)user_msg_data;
>
> if (msg->msgid != data->tx_msgid) {
> - printk(KERN_ERR "Received msgid (%02x) and transmitted "
> - "msgid (%02x) mismatch!\n",
> - (int)msg->msgid,
> - (int)data->tx_msgid);
> + dev_err(data->bmc_device, "Mismatch between received msgid "
> + "(%02x) and transmitted msgid (%02x)!\n",
> + (int)msg->msgid,
> + (int)data->tx_msgid);
> ipmi_free_recv_msg(msg);
> return;
> }
>
> !DSPAM:47193f59493201721698080!
>


--
Jean Delvare

2007-10-23 11:27:57

by Mark M. Hoffman

[permalink] [raw]
Subject: Re: [PATCH v2] ibmpex: Change printk to dev_{info,err} macros

Hi:

* Jean Delvare <[email protected]> [2007-10-20 23:30:52 +0200]:
> On Fri, 19 Oct 2007 16:35:07 -0700, Darrick J. Wong wrote:
> > Ok, I'll change the message to be a bit more accurate.
> > ---
> > Clean up printk use in ibmpex.
> >
> > Signed-off-by: Darrick J. Wong <[email protected]>
> > ---
>
> Acked-by: Jean Delvare <[email protected]>

Applied to hwmon-2.6.git/testing, thanks.

--
Mark M. Hoffman
[email protected]