ipmi: kcs_bmc: don't change device name

Message ID 20180706181601.134913-1-benjaminfair@google.com
State Not Applicable, archived
Headers show
Series
  • ipmi: kcs_bmc: don't change device name
Related show

Commit Message

Benjamin Fair July 6, 2018, 6:16 p.m.
kcs_bmc_alloc(...) calls dev_set_name(...) which is incorrect as most
bus driver frameworks, platform_driver in particular, assume that they
are able to set the device name themselves.

Signed-off-by: Benjamin Fair <benjaminfair@google.com>
---
 drivers/char/ipmi/kcs_bmc.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Corey Minyard July 20, 2018, 12:52 a.m. | #1
On 07/06/2018 01:16 PM, Benjamin Fair wrote:
> kcs_bmc_alloc(...) calls dev_set_name(...) which is incorrect as most
> bus driver frameworks, platform_driver in particular, assume that they
> are able to set the device name themselves.

Sorry for the delay, I've been busy and on vacation.

This is queued for the next release.

-corey

> Signed-off-by: Benjamin Fair <benjaminfair@google.com>
> ---
>   drivers/char/ipmi/kcs_bmc.c | 7 ++++---
>   1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/char/ipmi/kcs_bmc.c b/drivers/char/ipmi/kcs_bmc.c
> index fbfc05e3f3d1..cd75118bb0ac 100644
> --- a/drivers/char/ipmi/kcs_bmc.c
> +++ b/drivers/char/ipmi/kcs_bmc.c
> @@ -16,6 +16,8 @@
>   
>   #include "kcs_bmc.h"
>   
> +#define DEVICE_NAME "ipmi-kcs"
> +
>   #define KCS_MSG_BUFSIZ    1000
>   
>   #define KCS_ZERO_DATA     0
> @@ -440,8 +442,6 @@ struct kcs_bmc *kcs_bmc_alloc(struct device *dev, int sizeof_priv, u32 channel)
>   	if (!kcs_bmc)
>   		return NULL;
>   
> -	dev_set_name(dev, "ipmi-kcs%u", channel);
> -
>   	spin_lock_init(&kcs_bmc->lock);
>   	kcs_bmc->channel = channel;
>   
> @@ -455,7 +455,8 @@ struct kcs_bmc *kcs_bmc_alloc(struct device *dev, int sizeof_priv, u32 channel)
>   		return NULL;
>   
>   	kcs_bmc->miscdev.minor = MISC_DYNAMIC_MINOR;
> -	kcs_bmc->miscdev.name = dev_name(dev);
> +	kcs_bmc->miscdev.name = devm_kasprintf(dev, GFP_KERNEL, "%s%u",
> +					       DEVICE_NAME, channel);
>   	kcs_bmc->miscdev.fops = &kcs_bmc_fops;
>   
>   	return kcs_bmc;
Benjamin Fair July 20, 2018, 1:32 a.m. | #2
On Thu, Jul 19, 2018 at 5:52 PM Corey Minyard <minyard@acm.org> wrote:
>
> On 07/06/2018 01:16 PM, Benjamin Fair wrote:
> > kcs_bmc_alloc(...) calls dev_set_name(...) which is incorrect as most
> > bus driver frameworks, platform_driver in particular, assume that they
> > are able to set the device name themselves.
>
> Sorry for the delay, I've been busy and on vacation.
>
> This is queued for the next release.
>
> -corey

Great! Thanks, Corey.

Patch

diff --git a/drivers/char/ipmi/kcs_bmc.c b/drivers/char/ipmi/kcs_bmc.c
index fbfc05e3f3d1..cd75118bb0ac 100644
--- a/drivers/char/ipmi/kcs_bmc.c
+++ b/drivers/char/ipmi/kcs_bmc.c
@@ -16,6 +16,8 @@ 
 
 #include "kcs_bmc.h"
 
+#define DEVICE_NAME "ipmi-kcs"
+
 #define KCS_MSG_BUFSIZ    1000
 
 #define KCS_ZERO_DATA     0
@@ -440,8 +442,6 @@  struct kcs_bmc *kcs_bmc_alloc(struct device *dev, int sizeof_priv, u32 channel)
 	if (!kcs_bmc)
 		return NULL;
 
-	dev_set_name(dev, "ipmi-kcs%u", channel);
-
 	spin_lock_init(&kcs_bmc->lock);
 	kcs_bmc->channel = channel;
 
@@ -455,7 +455,8 @@  struct kcs_bmc *kcs_bmc_alloc(struct device *dev, int sizeof_priv, u32 channel)
 		return NULL;
 
 	kcs_bmc->miscdev.minor = MISC_DYNAMIC_MINOR;
-	kcs_bmc->miscdev.name = dev_name(dev);
+	kcs_bmc->miscdev.name = devm_kasprintf(dev, GFP_KERNEL, "%s%u",
+					       DEVICE_NAME, channel);
 	kcs_bmc->miscdev.fops = &kcs_bmc_fops;
 
 	return kcs_bmc;