2014-03-25 08:25:50

by Surendra Patil

[permalink] [raw]
Subject: [PATCH] drivers:bluetooth:ath3k.c: Fixed sparse warning for cast to restricted __le32

This patch fixes below Sparse warnings -
drivers/bluetooth/ath3k.c:370:17: warning: cast to restricted __le32
drivers/bluetooth/ath3k.c:432:17: warning: cast to restricted __le32

Signed-off-by: Surendra Patil <[email protected]>
---
drivers/bluetooth/ath3k.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
index be571fe..badacbc 100644
--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
@@ -367,7 +367,7 @@ static int ath3k_load_patch(struct usb_device *udev)
}

snprintf(filename, ATH3K_NAME_LEN, "ar3k/AthrBT_0x%08x.dfu",
- le32_to_cpu(fw_version.rom_version));
+ fw_version.rom_version);

ret = request_firmware(&firmware, filename, &udev->dev);
if (ret < 0) {
@@ -429,7 +429,7 @@ static int ath3k_load_syscfg(struct usb_device *udev)
}

snprintf(filename, ATH3K_NAME_LEN, "ar3k/ramps_0x%08x_%d%s",
- le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
+ fw_version.rom_version, clk_value, ".dfu");

ret = request_firmware(&firmware, filename, &udev->dev);
if (ret < 0) {
--
1.8.3.2


2014-03-25 17:09:56

by Surendra Patil

[permalink] [raw]
Subject: Re: [PATCH] drivers:bluetooth:ath3k.c: Fixed sparse warning for cast to restricted __le32

thanks for reviews.
will work on it .


On Tue, Mar 25, 2014 at 1:38 AM, Johan Hedberg <[email protected]>wrote:

> Hi,
>
> On Tue, Mar 25, 2014, Surendra Patil wrote:
> > This patch fixes below Sparse warnings -
> > drivers/bluetooth/ath3k.c:370:17: warning: cast to restricted __le32
> > drivers/bluetooth/ath3k.c:432:17: warning: cast to restricted __le32
> >
> > Signed-off-by: Surendra Patil <[email protected]>
> > ---
> > drivers/bluetooth/ath3k.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
> > index be571fe..badacbc 100644
> > --- a/drivers/bluetooth/ath3k.c
> > +++ b/drivers/bluetooth/ath3k.c
> > @@ -367,7 +367,7 @@ static int ath3k_load_patch(struct usb_device *udev)
> > }
> >
> > snprintf(filename, ATH3K_NAME_LEN, "ar3k/AthrBT_0x%08x.dfu",
> > - le32_to_cpu(fw_version.rom_version));
> > + fw_version.rom_version);
> >
> > ret = request_firmware(&firmware, filename, &udev->dev);
> > if (ret < 0) {
> > @@ -429,7 +429,7 @@ static int ath3k_load_syscfg(struct usb_device *udev)
> > }
> >
> > snprintf(filename, ATH3K_NAME_LEN, "ar3k/ramps_0x%08x_%d%s",
> > - le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
> > + fw_version.rom_version, clk_value, ".dfu");
> >
> > ret = request_firmware(&firmware, filename, &udev->dev);
> > if (ret < 0) {
>
> Are you sure this doesn't introduce a bug on big endian systems? We just
> recently applied commit b9e2535acad8f52a17e2aa843d45a6b756b59592 which
> adds this le32_to_cpu conversion. Probably the correct fix is to update
> this fw_version struct definition to use __le32 for any member that's
> expected to be in little endian format?
>
> Johan
>



--
Best,
Surendra Patil

2014-03-25 08:38:37

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH] drivers:bluetooth:ath3k.c: Fixed sparse warning for cast to restricted __le32

Hi,

On Tue, Mar 25, 2014, Surendra Patil wrote:
> This patch fixes below Sparse warnings -
> drivers/bluetooth/ath3k.c:370:17: warning: cast to restricted __le32
> drivers/bluetooth/ath3k.c:432:17: warning: cast to restricted __le32
>
> Signed-off-by: Surendra Patil <[email protected]>
> ---
> drivers/bluetooth/ath3k.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
> index be571fe..badacbc 100644
> --- a/drivers/bluetooth/ath3k.c
> +++ b/drivers/bluetooth/ath3k.c
> @@ -367,7 +367,7 @@ static int ath3k_load_patch(struct usb_device *udev)
> }
>
> snprintf(filename, ATH3K_NAME_LEN, "ar3k/AthrBT_0x%08x.dfu",
> - le32_to_cpu(fw_version.rom_version));
> + fw_version.rom_version);
>
> ret = request_firmware(&firmware, filename, &udev->dev);
> if (ret < 0) {
> @@ -429,7 +429,7 @@ static int ath3k_load_syscfg(struct usb_device *udev)
> }
>
> snprintf(filename, ATH3K_NAME_LEN, "ar3k/ramps_0x%08x_%d%s",
> - le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
> + fw_version.rom_version, clk_value, ".dfu");
>
> ret = request_firmware(&firmware, filename, &udev->dev);
> if (ret < 0) {

Are you sure this doesn't introduce a bug on big endian systems? We just
recently applied commit b9e2535acad8f52a17e2aa843d45a6b756b59592 which
adds this le32_to_cpu conversion. Probably the correct fix is to update
this fw_version struct definition to use __le32 for any member that's
expected to be in little endian format?

Johan

2014-03-25 08:32:33

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] drivers:bluetooth:ath3k.c: Fixed sparse warning for cast to restricted __le32

On Tue, 2014-03-25 at 01:25 -0700, Surendra Patil wrote:
> This patch fixes below Sparse warnings -
> drivers/bluetooth/ath3k.c:370:17: warning: cast to restricted __le32
> drivers/bluetooth/ath3k.c:432:17: warning: cast to restricted __le32

You are changing output here.

I suspect rom_version should be marked __le32 instead
of unsigned int in "struct ath3k_version" instead.

> Signed-off-by: Surendra Patil <[email protected]>
> ---
> drivers/bluetooth/ath3k.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
> index be571fe..badacbc 100644
> --- a/drivers/bluetooth/ath3k.c
> +++ b/drivers/bluetooth/ath3k.c
> @@ -367,7 +367,7 @@ static int ath3k_load_patch(struct usb_device *udev)
> }
>
> snprintf(filename, ATH3K_NAME_LEN, "ar3k/AthrBT_0x%08x.dfu",
> - le32_to_cpu(fw_version.rom_version));
> + fw_version.rom_version);
>
> ret = request_firmware(&firmware, filename, &udev->dev);
> if (ret < 0) {
> @@ -429,7 +429,7 @@ static int ath3k_load_syscfg(struct usb_device *udev)
> }
>
> snprintf(filename, ATH3K_NAME_LEN, "ar3k/ramps_0x%08x_%d%s",
> - le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
> + fw_version.rom_version, clk_value, ".dfu");
>
> ret = request_firmware(&firmware, filename, &udev->dev);
> if (ret < 0) {