All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] staging: r8712u: remove unnecessary le32_to_cpu
@ 2017-02-10  3:51 Perry Hooker
  2017-02-10 14:08 ` Greg KH
  0 siblings, 1 reply; 9+ messages in thread
From: Perry Hooker @ 2017-02-10  3:51 UTC (permalink / raw)
  To: gregkh
  Cc: Larry.Finger, florian.c.schilhabel, devel, linux-kernel, Perry Hooker

This patch fixes the following sparse warning:
drivers/staging/rtl8712/usb_ops_linux.c:212:33: warning: cast to restricted __le32

Signed-off-by: Perry Hooker <perry.hooker@gmail.com>
---
 drivers/staging/rtl8712/usb_ops_linux.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/rtl8712/usb_ops_linux.c b/drivers/staging/rtl8712/usb_ops_linux.c
index fc6bb0b..259ef8f 100644
--- a/drivers/staging/rtl8712/usb_ops_linux.c
+++ b/drivers/staging/rtl8712/usb_ops_linux.c
@@ -209,7 +209,7 @@ static void r8712_usb_read_port_complete(struct urb *purb)
 
 			precvbuf->transfer_len = purb->actual_length;
 			pbuf = (uint *)precvbuf->pbuf;
-			isevt = le32_to_cpu(*(pbuf + 1)) & 0x1ff;
+			isevt = *(pbuf + 1) & 0x1ff;
 			if ((isevt & 0x1ff) == 0x1ff) {
 				r8712_rxcmd_event_hdl(padapter, pbuf);
 				skb_queue_tail(&precvpriv->rx_skb_queue, pskb);
-- 
2.4.11

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] staging: r8712u: remove unnecessary le32_to_cpu
  2017-02-10  3:51 [PATCH] staging: r8712u: remove unnecessary le32_to_cpu Perry Hooker
@ 2017-02-10 14:08 ` Greg KH
  2017-02-10 14:52   ` Larry Finger
  0 siblings, 1 reply; 9+ messages in thread
From: Greg KH @ 2017-02-10 14:08 UTC (permalink / raw)
  To: Perry Hooker; +Cc: devel, florian.c.schilhabel, linux-kernel, Larry.Finger

On Thu, Feb 09, 2017 at 08:51:55PM -0700, Perry Hooker wrote:
> This patch fixes the following sparse warning:
> drivers/staging/rtl8712/usb_ops_linux.c:212:33: warning: cast to restricted __le32
> 
> Signed-off-by: Perry Hooker <perry.hooker@gmail.com>
> ---
>  drivers/staging/rtl8712/usb_ops_linux.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Does not apply to my tree :(

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] staging: r8712u: remove unnecessary le32_to_cpu
  2017-02-10 14:08 ` Greg KH
@ 2017-02-10 14:52   ` Larry Finger
  2017-02-10 14:58     ` Greg KH
  2017-02-10 18:23     ` [PATCH] staging: r8712u: use __le32 type for little-endian data Perry Hooker
  0 siblings, 2 replies; 9+ messages in thread
From: Larry Finger @ 2017-02-10 14:52 UTC (permalink / raw)
  To: Greg KH, Perry Hooker; +Cc: devel, florian.c.schilhabel, linux-kernel

On 02/10/2017 08:08 AM, Greg KH wrote:
> On Thu, Feb 09, 2017 at 08:51:55PM -0700, Perry Hooker wrote:
>> This patch fixes the following sparse warning:
>> drivers/staging/rtl8712/usb_ops_linux.c:212:33: warning: cast to restricted __le32
>>
>> Signed-off-by: Perry Hooker <perry.hooker@gmail.com>
>> ---
>>  drivers/staging/rtl8712/usb_ops_linux.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> Does not apply to my tree :(

That is good. Yes the patch silenced the Sparse warning, but it would BREAK the 
driver on every big-endian machine. Variable pbuf is a pointer to a string of 
bytes *in little-endian order* that is to be converted into a cpu-ordered 32-bit 
quantity. The correct way to silence the warning is to make sure the compiler 
understands what *(pbuf + 1) really is.

BTW, that driver has been tested on BE hardware. Please be careful about endian 
changes.

NACK.

Larry

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] staging: r8712u: remove unnecessary le32_to_cpu
  2017-02-10 14:52   ` Larry Finger
@ 2017-02-10 14:58     ` Greg KH
  2017-02-10 15:07       ` Larry Finger
  2017-02-10 18:23     ` [PATCH] staging: r8712u: use __le32 type for little-endian data Perry Hooker
  1 sibling, 1 reply; 9+ messages in thread
From: Greg KH @ 2017-02-10 14:58 UTC (permalink / raw)
  To: Larry Finger; +Cc: Perry Hooker, devel, florian.c.schilhabel, linux-kernel

On Fri, Feb 10, 2017 at 08:52:12AM -0600, Larry Finger wrote:
> On 02/10/2017 08:08 AM, Greg KH wrote:
> > On Thu, Feb 09, 2017 at 08:51:55PM -0700, Perry Hooker wrote:
> > > This patch fixes the following sparse warning:
> > > drivers/staging/rtl8712/usb_ops_linux.c:212:33: warning: cast to restricted __le32
> > > 
> > > Signed-off-by: Perry Hooker <perry.hooker@gmail.com>
> > > ---
> > >  drivers/staging/rtl8712/usb_ops_linux.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > Does not apply to my tree :(
> 
> That is good. Yes the patch silenced the Sparse warning, but it would BREAK
> the driver on every big-endian machine. Variable pbuf is a pointer to a
> string of bytes *in little-endian order* that is to be converted into a
> cpu-ordered 32-bit quantity. The correct way to silence the warning is to
> make sure the compiler understands what *(pbuf + 1) really is.
> 
> BTW, that driver has been tested on BE hardware. Please be careful about
> endian changes.
> 
> NACK.

Care to comment this somehow so that I don't accidentally take a patch
for this in the future?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] staging: r8712u: remove unnecessary le32_to_cpu
  2017-02-10 14:58     ` Greg KH
@ 2017-02-10 15:07       ` Larry Finger
  2017-02-10 18:24         ` Perry Hooker
  0 siblings, 1 reply; 9+ messages in thread
From: Larry Finger @ 2017-02-10 15:07 UTC (permalink / raw)
  To: Greg KH; +Cc: Perry Hooker, devel, florian.c.schilhabel, linux-kernel

On 02/10/2017 08:58 AM, Greg KH wrote:
> On Fri, Feb 10, 2017 at 08:52:12AM -0600, Larry Finger wrote:
>> On 02/10/2017 08:08 AM, Greg KH wrote:
>>> On Thu, Feb 09, 2017 at 08:51:55PM -0700, Perry Hooker wrote:
>>>> This patch fixes the following sparse warning:
>>>> drivers/staging/rtl8712/usb_ops_linux.c:212:33: warning: cast to restricted __le32
>>>>
>>>> Signed-off-by: Perry Hooker <perry.hooker@gmail.com>
>>>> ---
>>>>  drivers/staging/rtl8712/usb_ops_linux.c | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> Does not apply to my tree :(
>>
>> That is good. Yes the patch silenced the Sparse warning, but it would BREAK
>> the driver on every big-endian machine. Variable pbuf is a pointer to a
>> string of bytes *in little-endian order* that is to be converted into a
>> cpu-ordered 32-bit quantity. The correct way to silence the warning is to
>> make sure the compiler understands what *(pbuf + 1) really is.
>>
>> BTW, that driver has been tested on BE hardware. Please be careful about
>> endian changes.
>>
>> NACK.
>
> Care to comment this somehow so that I don't accidentally take a patch
> for this in the future?

My recollection is that a number of patches had been submitted to clean up the 
endian warnings, but I do not remember the details.

I will try to reproduce those again, and get them resubmitted to clean up the 
warnings in a manner that does not break the driver. I do have a BE machine for 
testing.

Larry

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH] staging: r8712u: use __le32 type for little-endian data
  2017-02-10 14:52   ` Larry Finger
  2017-02-10 14:58     ` Greg KH
@ 2017-02-10 18:23     ` Perry Hooker
  2017-02-10 20:55       ` Larry Finger
  1 sibling, 1 reply; 9+ messages in thread
From: Perry Hooker @ 2017-02-10 18:23 UTC (permalink / raw)
  To: Larry.Finger; +Cc: gregkh, devel, linux-kernel, Perry Hooker

This patch fixes the following sparse warning:
drivers/staging/rtl8712/usb_ops_linux.c:212:33: warning: cast to restricted __le32

Signed-off-by: Perry Hooker <perry.hooker@gmail.com>
---
 drivers/staging/rtl8712/usb_ops_linux.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/rtl8712/usb_ops_linux.c b/drivers/staging/rtl8712/usb_ops_linux.c
index fc6bb0b..df7c1aa 100644
--- a/drivers/staging/rtl8712/usb_ops_linux.c
+++ b/drivers/staging/rtl8712/usb_ops_linux.c
@@ -192,7 +192,8 @@ void r8712_usb_write_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem)
 
 static void r8712_usb_read_port_complete(struct urb *purb)
 {
-	uint isevt, *pbuf;
+	__le32 *pbuf;
+	uint isevt;
 	struct recv_buf	*precvbuf = (struct recv_buf *)purb->context;
 	struct _adapter *padapter = (struct _adapter *)precvbuf->adapter;
 	struct recv_priv *precvpriv = &padapter->recvpriv;
@@ -208,7 +209,7 @@ static void r8712_usb_read_port_complete(struct urb *purb)
 			_pkt *pskb = precvbuf->pskb;
 
 			precvbuf->transfer_len = purb->actual_length;
-			pbuf = (uint *)precvbuf->pbuf;
+			pbuf = (__le32 *)precvbuf->pbuf;
 			isevt = le32_to_cpu(*(pbuf + 1)) & 0x1ff;
 			if ((isevt & 0x1ff) == 0x1ff) {
 				r8712_rxcmd_event_hdl(padapter, pbuf);
-- 
2.4.11

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] staging: r8712u: remove unnecessary le32_to_cpu
  2017-02-10 15:07       ` Larry Finger
@ 2017-02-10 18:24         ` Perry Hooker
  0 siblings, 0 replies; 9+ messages in thread
From: Perry Hooker @ 2017-02-10 18:24 UTC (permalink / raw)
  To: Larry Finger; +Cc: Greg KH, devel, Florian Schilhabel, linux-kernel

Ouch. My apologies. I'll take more care next time. I've supplied an
updated patch that uses the __le32 type for *(pbuf + 1).

On Fri, Feb 10, 2017 at 8:07 AM, Larry Finger <Larry.Finger@lwfinger.net> wrote:
> On 02/10/2017 08:58 AM, Greg KH wrote:
>>
>> On Fri, Feb 10, 2017 at 08:52:12AM -0600, Larry Finger wrote:
>>>
>>> On 02/10/2017 08:08 AM, Greg KH wrote:
>>>>
>>>> On Thu, Feb 09, 2017 at 08:51:55PM -0700, Perry Hooker wrote:
>>>>>
>>>>> This patch fixes the following sparse warning:
>>>>> drivers/staging/rtl8712/usb_ops_linux.c:212:33: warning: cast to
>>>>> restricted __le32
>>>>>
>>>>> Signed-off-by: Perry Hooker <perry.hooker@gmail.com>
>>>>> ---
>>>>>  drivers/staging/rtl8712/usb_ops_linux.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>>
>>>> Does not apply to my tree :(
>>>
>>>
>>> That is good. Yes the patch silenced the Sparse warning, but it would
>>> BREAK
>>> the driver on every big-endian machine. Variable pbuf is a pointer to a
>>> string of bytes *in little-endian order* that is to be converted into a
>>> cpu-ordered 32-bit quantity. The correct way to silence the warning is to
>>> make sure the compiler understands what *(pbuf + 1) really is.
>>>
>>> BTW, that driver has been tested on BE hardware. Please be careful about
>>> endian changes.
>>>
>>> NACK.
>>
>>
>> Care to comment this somehow so that I don't accidentally take a patch
>> for this in the future?
>
>
> My recollection is that a number of patches had been submitted to clean up
> the endian warnings, but I do not remember the details.
>
> I will try to reproduce those again, and get them resubmitted to clean up
> the warnings in a manner that does not break the driver. I do have a BE
> machine for testing.
>
> Larry
>
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] staging: r8712u: use __le32 type for little-endian data
  2017-02-10 18:23     ` [PATCH] staging: r8712u: use __le32 type for little-endian data Perry Hooker
@ 2017-02-10 20:55       ` Larry Finger
  2017-02-11 19:04         ` Perry Hooker
  0 siblings, 1 reply; 9+ messages in thread
From: Larry Finger @ 2017-02-10 20:55 UTC (permalink / raw)
  To: Perry Hooker; +Cc: gregkh, devel, linux-kernel

On 02/10/2017 12:23 PM, Perry Hooker wrote:
> This patch fixes the following sparse warning:
> drivers/staging/rtl8712/usb_ops_linux.c:212:33: warning: cast to restricted __le32
>
> Signed-off-by: Perry Hooker <perry.hooker@gmail.com>
> ---
>  drivers/staging/rtl8712/usb_ops_linux.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)

Are you using the staging branch of Greg's tree? If so, you should be using 
staging-next. The exact patch that you submitted has already been applied as 
commit 6839bc81478f entitled "staging: rtl8712: changed uint to __le32" and 
authored by Jannik Becher <becher.jannik@gmail.com>. The patch was applied on 
Tue Dec 20.

Sorry that I did not remember about that earlier patch with the first reply; 
however, you did get the fix right this time. Congratulations as these endian 
issues can be difficult.

In a quick look at the code, I see that there are a number of endian problems in 
the headers for the 802.11 packets, and in the macros that read and write the TX 
and RX descriptors. It is surprising that the driver actually works on 
big-endian hardware. I do not know how much experience you have, but the macros 
are tricky. I will try to get them cleaned up.

Larry


     staging: rtl8712: changed uint to __le32

>
> diff --git a/drivers/staging/rtl8712/usb_ops_linux.c b/drivers/staging/rtl8712/usb_ops_linux.c
> index fc6bb0b..df7c1aa 100644
> --- a/drivers/staging/rtl8712/usb_ops_linux.c
> +++ b/drivers/staging/rtl8712/usb_ops_linux.c
> @@ -192,7 +192,8 @@ void r8712_usb_write_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem)
>
>  static void r8712_usb_read_port_complete(struct urb *purb)
>  {
> -	uint isevt, *pbuf;
> +	__le32 *pbuf;
> +	uint isevt;
>  	struct recv_buf	*precvbuf = (struct recv_buf *)purb->context;
>  	struct _adapter *padapter = (struct _adapter *)precvbuf->adapter;
>  	struct recv_priv *precvpriv = &padapter->recvpriv;
> @@ -208,7 +209,7 @@ static void r8712_usb_read_port_complete(struct urb *purb)
>  			_pkt *pskb = precvbuf->pskb;
>
>  			precvbuf->transfer_len = purb->actual_length;
> -			pbuf = (uint *)precvbuf->pbuf;
> +			pbuf = (__le32 *)precvbuf->pbuf;
>  			isevt = le32_to_cpu(*(pbuf + 1)) & 0x1ff;
>  			if ((isevt & 0x1ff) == 0x1ff) {
>  				r8712_rxcmd_event_hdl(padapter, pbuf);
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] staging: r8712u: use __le32 type for little-endian data
  2017-02-10 20:55       ` Larry Finger
@ 2017-02-11 19:04         ` Perry Hooker
  0 siblings, 0 replies; 9+ messages in thread
From: Perry Hooker @ 2017-02-11 19:04 UTC (permalink / raw)
  To: Larry Finger; +Cc: Greg KH, devel, linux-kernel

Thank you all for taking the time to look at this. I'm sorry for
filling your inboxes with my mistakes - as you probably guessed, I'm
new to kernel development, so I really appreciate the feedback.

Perry

On Fri, Feb 10, 2017 at 1:55 PM, Larry Finger <Larry.Finger@lwfinger.net> wrote:
> On 02/10/2017 12:23 PM, Perry Hooker wrote:
>>
>> This patch fixes the following sparse warning:
>> drivers/staging/rtl8712/usb_ops_linux.c:212:33: warning: cast to
>> restricted __le32
>>
>> Signed-off-by: Perry Hooker <perry.hooker@gmail.com>
>> ---
>>  drivers/staging/rtl8712/usb_ops_linux.c | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>
>
> Are you using the staging branch of Greg's tree? If so, you should be using
> staging-next. The exact patch that you submitted has already been applied as
> commit 6839bc81478f entitled "staging: rtl8712: changed uint to __le32" and
> authored by Jannik Becher <becher.jannik@gmail.com>. The patch was applied
> on Tue Dec 20.
>
> Sorry that I did not remember about that earlier patch with the first reply;
> however, you did get the fix right this time. Congratulations as these
> endian issues can be difficult.
>
> In a quick look at the code, I see that there are a number of endian
> problems in the headers for the 802.11 packets, and in the macros that read
> and write the TX and RX descriptors. It is surprising that the driver
> actually works on big-endian hardware. I do not know how much experience you
> have, but the macros are tricky. I will try to get them cleaned up.
>
> Larry
>
>
>     staging: rtl8712: changed uint to __le32
>
>
>>
>> diff --git a/drivers/staging/rtl8712/usb_ops_linux.c
>> b/drivers/staging/rtl8712/usb_ops_linux.c
>> index fc6bb0b..df7c1aa 100644
>> --- a/drivers/staging/rtl8712/usb_ops_linux.c
>> +++ b/drivers/staging/rtl8712/usb_ops_linux.c
>> @@ -192,7 +192,8 @@ void r8712_usb_write_mem(struct intf_hdl *pintfhdl,
>> u32 addr, u32 cnt, u8 *wmem)
>>
>>  static void r8712_usb_read_port_complete(struct urb *purb)
>>  {
>> -       uint isevt, *pbuf;
>> +       __le32 *pbuf;
>> +       uint isevt;
>>         struct recv_buf *precvbuf = (struct recv_buf *)purb->context;
>>         struct _adapter *padapter = (struct _adapter *)precvbuf->adapter;
>>         struct recv_priv *precvpriv = &padapter->recvpriv;
>> @@ -208,7 +209,7 @@ static void r8712_usb_read_port_complete(struct urb
>> *purb)
>>                         _pkt *pskb = precvbuf->pskb;
>>
>>                         precvbuf->transfer_len = purb->actual_length;
>> -                       pbuf = (uint *)precvbuf->pbuf;
>> +                       pbuf = (__le32 *)precvbuf->pbuf;
>>                         isevt = le32_to_cpu(*(pbuf + 1)) & 0x1ff;
>>                         if ((isevt & 0x1ff) == 0x1ff) {
>>                                 r8712_rxcmd_event_hdl(padapter, pbuf);
>>
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-02-11 19:05 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-10  3:51 [PATCH] staging: r8712u: remove unnecessary le32_to_cpu Perry Hooker
2017-02-10 14:08 ` Greg KH
2017-02-10 14:52   ` Larry Finger
2017-02-10 14:58     ` Greg KH
2017-02-10 15:07       ` Larry Finger
2017-02-10 18:24         ` Perry Hooker
2017-02-10 18:23     ` [PATCH] staging: r8712u: use __le32 type for little-endian data Perry Hooker
2017-02-10 20:55       ` Larry Finger
2017-02-11 19:04         ` Perry Hooker

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.