All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mwifiex: Use put_unaligned_le32
@ 2017-10-04 18:28 Himanshu Jha
  2017-10-05  7:23 ` Kalle Valo
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Himanshu Jha @ 2017-10-04 18:28 UTC (permalink / raw)
  To: amitkarwar
  Cc: nishants, gbhat, huxm, kvalo, linux-wireless, netdev,
	linux-kernel, Himanshu Jha

Use put_unaligned_le32 rather than using byte ordering function and
memcpy which makes code clear.
Also, add the header file where it is declared.

Done using Coccinelle and semantic patch used is :

@ rule1 @
identifier tmp; expression ptr,x; type T;
@@

- tmp = cpu_to_le32(x);

  <+... when != tmp
- memcpy(ptr, (T)&tmp, ...);
+ put_unaligned_le32(x,ptr);
  ...+>

@ depends on rule1 @
type j; identifier tmp;
@@

- j tmp;
  ...when != tmp

Signed-off-by: Himanshu Jha <himanshujha199640@gmail.com>
---
 drivers/net/wireless/marvell/mwifiex/cmdevt.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/marvell/mwifiex/cmdevt.c b/drivers/net/wireless/marvell/mwifiex/cmdevt.c
index 0edc5d6..e28e119 100644
--- a/drivers/net/wireless/marvell/mwifiex/cmdevt.c
+++ b/drivers/net/wireless/marvell/mwifiex/cmdevt.c
@@ -17,6 +17,7 @@
  * this warranty disclaimer.
  */
 
+#include <linux/unaligned/access_ok.h>
 #include "decl.h"
 #include "ioctl.h"
 #include "util.h"
@@ -183,7 +184,6 @@ static int mwifiex_dnld_cmd_to_fw(struct mwifiex_private *priv,
 	uint16_t cmd_code;
 	uint16_t cmd_size;
 	unsigned long flags;
-	__le32 tmp;
 
 	if (!adapter || !cmd_node)
 		return -1;
@@ -249,9 +249,9 @@ static int mwifiex_dnld_cmd_to_fw(struct mwifiex_private *priv,
 	mwifiex_dbg_dump(adapter, CMD_D, "cmd buffer:", host_cmd, cmd_size);
 
 	if (adapter->iface_type == MWIFIEX_USB) {
-		tmp = cpu_to_le32(MWIFIEX_USB_TYPE_CMD);
 		skb_push(cmd_node->cmd_skb, MWIFIEX_TYPE_LEN);
-		memcpy(cmd_node->cmd_skb->data, &tmp, MWIFIEX_TYPE_LEN);
+		put_unaligned_le32(MWIFIEX_USB_TYPE_CMD,
+				   cmd_node->cmd_skb->data);
 		adapter->cmd_sent = true;
 		ret = adapter->if_ops.host_to_card(adapter,
 						   MWIFIEX_USB_EP_CMD_EVENT,
@@ -317,7 +317,6 @@ static int mwifiex_dnld_sleep_confirm_cmd(struct mwifiex_adapter *adapter)
 				(struct mwifiex_opt_sleep_confirm *)
 						adapter->sleep_cfm->data;
 	struct sk_buff *sleep_cfm_tmp;
-	__le32 tmp;
 
 	priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
 
@@ -342,8 +341,7 @@ static int mwifiex_dnld_sleep_confirm_cmd(struct mwifiex_adapter *adapter)
 				      + MWIFIEX_TYPE_LEN);
 		skb_put(sleep_cfm_tmp, sizeof(struct mwifiex_opt_sleep_confirm)
 			+ MWIFIEX_TYPE_LEN);
-		tmp = cpu_to_le32(MWIFIEX_USB_TYPE_CMD);
-		memcpy(sleep_cfm_tmp->data, &tmp, MWIFIEX_TYPE_LEN);
+		put_unaligned_le32(MWIFIEX_USB_TYPE_CMD, sleep_cfm_tmp->data);
 		memcpy(sleep_cfm_tmp->data + MWIFIEX_TYPE_LEN,
 		       adapter->sleep_cfm->data,
 		       sizeof(struct mwifiex_opt_sleep_confirm));
-- 
2.7.4

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

* Re: [PATCH] mwifiex: Use put_unaligned_le32
  2017-10-04 18:28 [PATCH] mwifiex: Use put_unaligned_le32 Himanshu Jha
@ 2017-10-05  7:23 ` Kalle Valo
  2017-10-05  8:34   ` Himanshu Jha
  2017-10-07  3:31 ` kbuild test robot
  2017-10-07  5:17 ` kbuild test robot
  2 siblings, 1 reply; 11+ messages in thread
From: Kalle Valo @ 2017-10-05  7:23 UTC (permalink / raw)
  To: Himanshu Jha
  Cc: amitkarwar, nishants, gbhat, huxm, linux-wireless, netdev, linux-kernel

Himanshu Jha <himanshujha199640@gmail.com> writes:

> Use put_unaligned_le32 rather than using byte ordering function and
> memcpy which makes code clear.
> Also, add the header file where it is declared.
>
> Done using Coccinelle and semantic patch used is :
>
> @ rule1 @
> identifier tmp; expression ptr,x; type T;
> @@
>
> - tmp = cpu_to_le32(x);
>
>   <+... when != tmp
> - memcpy(ptr, (T)&tmp, ...);
> + put_unaligned_le32(x,ptr);
>   ...+>
>
> @ depends on rule1 @
> type j; identifier tmp;
> @@
>
> - j tmp;
>   ...when != tmp
>
> Signed-off-by: Himanshu Jha <himanshujha199640@gmail.com>
> ---
>  drivers/net/wireless/marvell/mwifiex/cmdevt.c | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/wireless/marvell/mwifiex/cmdevt.c b/drivers/net/wireless/marvell/mwifiex/cmdevt.c
> index 0edc5d6..e28e119 100644
> --- a/drivers/net/wireless/marvell/mwifiex/cmdevt.c
> +++ b/drivers/net/wireless/marvell/mwifiex/cmdevt.c
> @@ -17,6 +17,7 @@
>   * this warranty disclaimer.
>   */
>  
> +#include <linux/unaligned/access_ok.h>

I don't think this is correct. Should it be asm/unaligned.h?

-- 
Kalle Valo

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

* Re: [PATCH] mwifiex: Use put_unaligned_le32
  2017-10-05  7:23 ` Kalle Valo
@ 2017-10-05  8:34   ` Himanshu Jha
  2017-10-05  8:41     ` Kalle Valo
  0 siblings, 1 reply; 11+ messages in thread
From: Himanshu Jha @ 2017-10-05  8:34 UTC (permalink / raw)
  To: Kalle Valo
  Cc: amitkarwar, nishants, gbhat, huxm, linux-wireless, netdev, linux-kernel

On Thu, Oct 05, 2017 at 10:23:37AM +0300, Kalle Valo wrote:
> Himanshu Jha <himanshujha199640@gmail.com> writes:
> 
> > Use put_unaligned_le32 rather than using byte ordering function and
> > memcpy which makes code clear.
> > Also, add the header file where it is declared.
> >
> > Done using Coccinelle and semantic patch used is :
> >
> > @ rule1 @
> > identifier tmp; expression ptr,x; type T;
> > @@
> >
> > - tmp = cpu_to_le32(x);
> >
> >   <+... when != tmp
> > - memcpy(ptr, (T)&tmp, ...);
> > + put_unaligned_le32(x,ptr);
> >   ...+>
> >
> > @ depends on rule1 @
> > type j; identifier tmp;
> > @@
> >
> > - j tmp;
> >   ...when != tmp
> >
> > Signed-off-by: Himanshu Jha <himanshujha199640@gmail.com>
> > ---
> >  drivers/net/wireless/marvell/mwifiex/cmdevt.c | 10 ++++------
> >  1 file changed, 4 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/net/wireless/marvell/mwifiex/cmdevt.c b/drivers/net/wireless/marvell/mwifiex/cmdevt.c
> > index 0edc5d6..e28e119 100644
> > --- a/drivers/net/wireless/marvell/mwifiex/cmdevt.c
> > +++ b/drivers/net/wireless/marvell/mwifiex/cmdevt.c
> > @@ -17,6 +17,7 @@
> >   * this warranty disclaimer.
> >   */
> >  
> > +#include <linux/unaligned/access_ok.h>
> 
> I don't think this is correct. Should it be asm/unaligned.h?

Would mind explainig me as to why it is incorrect! Also, it defined in
both the header files but, why is asm/unaligned.h preferred ?

Thanks

> -- 
> Kalle Valo

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

* Re: [PATCH] mwifiex: Use put_unaligned_le32
  2017-10-05  8:34   ` Himanshu Jha
@ 2017-10-05  8:41     ` Kalle Valo
  2017-10-05 15:22       ` Himanshu Jha
  0 siblings, 1 reply; 11+ messages in thread
From: Kalle Valo @ 2017-10-05  8:41 UTC (permalink / raw)
  To: Himanshu Jha
  Cc: amitkarwar, nishants, gbhat, huxm, linux-wireless, netdev, linux-kernel

Himanshu Jha <himanshujha199640@gmail.com> writes:

>> > --- a/drivers/net/wireless/marvell/mwifiex/cmdevt.c
>> > +++ b/drivers/net/wireless/marvell/mwifiex/cmdevt.c
>> > @@ -17,6 +17,7 @@
>> >   * this warranty disclaimer.
>> >   */
>> >  
>> > +#include <linux/unaligned/access_ok.h>
>> 
>> I don't think this is correct. Should it be asm/unaligned.h?
>
> Would mind explainig me as to why it is incorrect! Also, it defined in
> both the header files but, why is asm/unaligned.h preferred ?

asm/unaligned.h seems to be the toplevel header file which includes
header files based on arch configuration. Also grepping the sources
support that, nobody from drivers/ include access_ok.h directly.

But I can't say that I fully understand how the header files work so
please do correct me if I have mistaken.

-- 
Kalle Valo

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

* Re: [PATCH] mwifiex: Use put_unaligned_le32
  2017-10-05  8:41     ` Kalle Valo
@ 2017-10-05 15:22       ` Himanshu Jha
  2017-10-05 18:02         ` Brian Norris
  0 siblings, 1 reply; 11+ messages in thread
From: Himanshu Jha @ 2017-10-05 15:22 UTC (permalink / raw)
  To: Kalle Valo
  Cc: amitkarwar, nishants, gbhat, huxm, linux-wireless, netdev, linux-kernel

On Thu, Oct 05, 2017 at 11:41:38AM +0300, Kalle Valo wrote:
> Himanshu Jha <himanshujha199640@gmail.com> writes:
> 
> >> > --- a/drivers/net/wireless/marvell/mwifiex/cmdevt.c
> >> > +++ b/drivers/net/wireless/marvell/mwifiex/cmdevt.c
> >> > @@ -17,6 +17,7 @@
> >> >   * this warranty disclaimer.
> >> >   */
> >> >  
> >> > +#include <linux/unaligned/access_ok.h>
> >> 
> >> I don't think this is correct. Should it be asm/unaligned.h?
> >
> > Would mind explainig me as to why it is incorrect! Also, it defined in
> > both the header files but, why is asm/unaligned.h preferred ?
> 
> asm/unaligned.h seems to be the toplevel header file which includes
> header files based on arch configuration. Also grepping the sources
> support that, nobody from drivers/ include access_ok.h directly.
>
Yes, you are correct!

I will send v2 patch with asm/unaligned.h

> But I can't say that I fully understand how the header files work so
> please do correct me if I have mistaken.
>
It is confusing to me as well.
There are various instances where a function used in file say for eg
int func_align (void* a)
is used and it is defined in align.h
But many files don't *directly* include align.h and rather include
any other header which includes align.h

Is compiling the file the only way to check if apppropriate header is
included or is there some other way to check for it.

Thanks

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

* Re: [PATCH] mwifiex: Use put_unaligned_le32
  2017-10-05 15:22       ` Himanshu Jha
@ 2017-10-05 18:02         ` Brian Norris
  2017-10-05 19:07           ` Himanshu Jha
  0 siblings, 1 reply; 11+ messages in thread
From: Brian Norris @ 2017-10-05 18:02 UTC (permalink / raw)
  To: Himanshu Jha
  Cc: Kalle Valo, amitkarwar, nishants, gbhat, huxm, linux-wireless,
	netdev, linux-kernel

On Thu, Oct 05, 2017 at 08:52:33PM +0530, Himanshu Jha wrote:
> There are various instances where a function used in file say for eg
> int func_align (void* a)
> is used and it is defined in align.h
> But many files don't *directly* include align.h and rather include
> any other header which includes align.h

I believe the general rule is that you should included headers for all
symbols you use, and not rely on implicit includes.

The modification to the general rule is that not all headers are
intended to be included directly, and in such cases there's likely a
parent header that is the more appropriate target.

In this case, the key is CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS. It
seems that asm-generic/unaligned.h is set up to include different
headers, based on the expected architecture behavior.

I wonder if include/linux/unaligned/access_ok.h should have a safety
check (e.g., raise an #error if
!CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS?).

> Is compiling the file the only way to check if apppropriate header is
> included or is there some other way to check for it.

I believe it's mostly manual. Implicit includes have been a problem for
anyone who refactors header files.

Brian

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

* Re: [PATCH] mwifiex: Use put_unaligned_le32
  2017-10-05 18:02         ` Brian Norris
@ 2017-10-05 19:07           ` Himanshu Jha
  2017-10-05 21:54             ` Igor Mitsyanko
  2017-10-06 13:31             ` Kalle Valo
  0 siblings, 2 replies; 11+ messages in thread
From: Himanshu Jha @ 2017-10-05 19:07 UTC (permalink / raw)
  To: Brian Norris
  Cc: Kalle Valo, amitkarwar, nishants, gbhat, huxm, linux-wireless,
	netdev, linux-kernel

On Thu, Oct 05, 2017 at 11:02:50AM -0700, Brian Norris wrote:
> On Thu, Oct 05, 2017 at 08:52:33PM +0530, Himanshu Jha wrote:
> > There are various instances where a function used in file say for eg
> > int func_align (void* a)
> > is used and it is defined in align.h
> > But many files don't *directly* include align.h and rather include
> > any other header which includes align.h
> 
> I believe the general rule is that you should included headers for all
> symbols you use, and not rely on implicit includes.
> 
> The modification to the general rule is that not all headers are
> intended to be included directly, and in such cases there's likely a
> parent header that is the more appropriate target.
> 
> In this case, the key is CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS. It
> seems that asm-generic/unaligned.h is set up to include different
> headers, based on the expected architecture behavior.
>
Yes, asm-generic/unaligned.h looks more appopriate and is most generic
implementation of unaligned accesses and  arc specific.

Let's see what Kalle Valo recommends! And then I will send v2 of the
patch.

Thanks for the information!

Himanshu Jha

> I wonder if include/linux/unaligned/access_ok.h should have a safety
> check (e.g., raise an #error if
> !CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS?).
> 
> > Is compiling the file the only way to check if apppropriate header is
> > included or is there some other way to check for it.
> 
> I believe it's mostly manual. Implicit includes have been a problem for
> anyone who refactors header files.
> 
> Brian

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

* Re: [PATCH] mwifiex: Use put_unaligned_le32
  2017-10-05 19:07           ` Himanshu Jha
@ 2017-10-05 21:54             ` Igor Mitsyanko
  2017-10-06 13:31             ` Kalle Valo
  1 sibling, 0 replies; 11+ messages in thread
From: Igor Mitsyanko @ 2017-10-05 21:54 UTC (permalink / raw)
  To: Himanshu Jha, Brian Norris
  Cc: Kalle Valo, amitkarwar, nishants, gbhat, huxm, linux-wireless,
	netdev, linux-kernel

On 10/05/2017 12:07 PM, Himanshu Jha wrote:
>>
>> In this case, the key is CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS. It
>> seems that asm-generic/unaligned.h is set up to include different
>> headers, based on the expected architecture behavior.
>>
> Yes, asm-generic/unaligned.h looks more appopriate and is most generic
> implementation of unaligned accesses and  arc specific.
> 

Probably the idea is that each ARCH knows exactly what is the best way 
to do unaligned access, so common code (like drivers) should include 
ARCH-specific asm/unaligned.h only. It will then decide how to do that 
and will include asm-generic/unaligned.h itself, if required.

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

* Re: [PATCH] mwifiex: Use put_unaligned_le32
  2017-10-05 19:07           ` Himanshu Jha
  2017-10-05 21:54             ` Igor Mitsyanko
@ 2017-10-06 13:31             ` Kalle Valo
  1 sibling, 0 replies; 11+ messages in thread
From: Kalle Valo @ 2017-10-06 13:31 UTC (permalink / raw)
  To: Himanshu Jha
  Cc: Brian Norris, amitkarwar, nishants, gbhat, huxm, linux-wireless,
	netdev, linux-kernel

Himanshu Jha <himanshujha199640@gmail.com> writes:

> On Thu, Oct 05, 2017 at 11:02:50AM -0700, Brian Norris wrote:
>> On Thu, Oct 05, 2017 at 08:52:33PM +0530, Himanshu Jha wrote:
>> > There are various instances where a function used in file say for eg
>> > int func_align (void* a)
>> > is used and it is defined in align.h
>> > But many files don't *directly* include align.h and rather include
>> > any other header which includes align.h
>> 
>> I believe the general rule is that you should included headers for all
>> symbols you use, and not rely on implicit includes.
>> 
>> The modification to the general rule is that not all headers are
>> intended to be included directly, and in such cases there's likely a
>> parent header that is the more appropriate target.
>> 
>> In this case, the key is CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS. It
>> seems that asm-generic/unaligned.h is set up to include different
>> headers, based on the expected architecture behavior.
>>
> Yes, asm-generic/unaligned.h looks more appopriate and is most generic
> implementation of unaligned accesses and  arc specific.
>
> Let's see what Kalle Valo recommends! And then I will send v2 of the
> patch.

Not sure what you are asking from me. But if you are asking should it
be:

#include <asm/unaligned.h>

or:

#include <asm-generic/unaligned.h>

I think it should be the former.

-- 
Kalle Valo

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

* Re: [PATCH] mwifiex: Use put_unaligned_le32
  2017-10-04 18:28 [PATCH] mwifiex: Use put_unaligned_le32 Himanshu Jha
  2017-10-05  7:23 ` Kalle Valo
@ 2017-10-07  3:31 ` kbuild test robot
  2017-10-07  5:17 ` kbuild test robot
  2 siblings, 0 replies; 11+ messages in thread
From: kbuild test robot @ 2017-10-07  3:31 UTC (permalink / raw)
  To: Himanshu Jha
  Cc: kbuild-all, amitkarwar, nishants, gbhat, huxm, kvalo,
	linux-wireless, netdev, linux-kernel, Himanshu Jha

[-- Attachment #1: Type: text/plain, Size: 12590 bytes --]

Hi Himanshu,

[auto build test ERROR on wireless-drivers-next/master]
[also build test ERROR on v4.14-rc3 next-20170929]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Himanshu-Jha/mwifiex-Use-put_unaligned_le32/20171007-095017
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 4.9.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=xtensa 

All errors (new ones prefixed by >>):

   In file included from arch/xtensa/include/asm/unaligned.h:22:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_struct.h:6:19: error: redefinition of 'get_unaligned_be16'
    static inline u16 get_unaligned_be16(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:22:28: note: previous definition of 'get_unaligned_be16' was here
    static __always_inline u16 get_unaligned_be16(const void *p)
                               ^
   In file included from arch/xtensa/include/asm/unaligned.h:22:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_struct.h:11:19: error: redefinition of 'get_unaligned_be32'
    static inline u32 get_unaligned_be32(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:27:28: note: previous definition of 'get_unaligned_be32' was here
    static __always_inline u32 get_unaligned_be32(const void *p)
                               ^
   In file included from arch/xtensa/include/asm/unaligned.h:22:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_struct.h:16:19: error: redefinition of 'get_unaligned_be64'
    static inline u64 get_unaligned_be64(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:32:28: note: previous definition of 'get_unaligned_be64' was here
    static __always_inline u64 get_unaligned_be64(const void *p)
                               ^
   In file included from arch/xtensa/include/asm/unaligned.h:22:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_struct.h:21:20: error: redefinition of 'put_unaligned_be16'
    static inline void put_unaligned_be16(u16 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:52:29: note: previous definition of 'put_unaligned_be16' was here
    static __always_inline void put_unaligned_be16(u16 val, void *p)
                                ^
   In file included from arch/xtensa/include/asm/unaligned.h:22:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_struct.h:26:20: error: redefinition of 'put_unaligned_be32'
    static inline void put_unaligned_be32(u32 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:57:29: note: previous definition of 'put_unaligned_be32' was here
    static __always_inline void put_unaligned_be32(u32 val, void *p)
                                ^
   In file included from arch/xtensa/include/asm/unaligned.h:22:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_struct.h:31:20: error: redefinition of 'put_unaligned_be64'
    static inline void put_unaligned_be64(u64 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:62:29: note: previous definition of 'put_unaligned_be64' was here
    static __always_inline void put_unaligned_be64(u64 val, void *p)
                                ^
   In file included from arch/xtensa/include/asm/unaligned.h:23:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/le_byteshift.h:40:19: error: redefinition of 'get_unaligned_le16'
    static inline u16 get_unaligned_le16(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:7:28: note: previous definition of 'get_unaligned_le16' was here
    static __always_inline u16 get_unaligned_le16(const void *p)
                               ^
   In file included from arch/xtensa/include/asm/unaligned.h:23:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/le_byteshift.h:45:19: error: redefinition of 'get_unaligned_le32'
    static inline u32 get_unaligned_le32(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:12:28: note: previous definition of 'get_unaligned_le32' was here
    static __always_inline u32 get_unaligned_le32(const void *p)
                               ^
   In file included from arch/xtensa/include/asm/unaligned.h:23:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/le_byteshift.h:50:19: error: redefinition of 'get_unaligned_le64'
    static inline u64 get_unaligned_le64(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:17:28: note: previous definition of 'get_unaligned_le64' was here
    static __always_inline u64 get_unaligned_le64(const void *p)
                               ^
   In file included from arch/xtensa/include/asm/unaligned.h:23:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/le_byteshift.h:55:20: error: redefinition of 'put_unaligned_le16'
    static inline void put_unaligned_le16(u16 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:37:29: note: previous definition of 'put_unaligned_le16' was here
    static __always_inline void put_unaligned_le16(u16 val, void *p)
                                ^
   In file included from arch/xtensa/include/asm/unaligned.h:23:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/le_byteshift.h:60:20: error: redefinition of 'put_unaligned_le32'
    static inline void put_unaligned_le32(u32 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:42:29: note: previous definition of 'put_unaligned_le32' was here
    static __always_inline void put_unaligned_le32(u32 val, void *p)
                                ^
   In file included from arch/xtensa/include/asm/unaligned.h:23:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/le_byteshift.h:65:20: error: redefinition of 'put_unaligned_le64'
    static inline void put_unaligned_le64(u64 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:47:29: note: previous definition of 'put_unaligned_le64' was here
    static __always_inline void put_unaligned_le64(u64 val, void *p)
                                ^

vim +/put_unaligned_le32 +60 include/linux/unaligned/le_byteshift.h

064106a9 Harvey Harrison 2008-04-29  39  
064106a9 Harvey Harrison 2008-04-29 @40  static inline u16 get_unaligned_le16(const void *p)
064106a9 Harvey Harrison 2008-04-29  41  {
064106a9 Harvey Harrison 2008-04-29  42  	return __get_unaligned_le16((const u8 *)p);
064106a9 Harvey Harrison 2008-04-29  43  }
064106a9 Harvey Harrison 2008-04-29  44  
064106a9 Harvey Harrison 2008-04-29 @45  static inline u32 get_unaligned_le32(const void *p)
064106a9 Harvey Harrison 2008-04-29  46  {
064106a9 Harvey Harrison 2008-04-29  47  	return __get_unaligned_le32((const u8 *)p);
064106a9 Harvey Harrison 2008-04-29  48  }
064106a9 Harvey Harrison 2008-04-29  49  
064106a9 Harvey Harrison 2008-04-29 @50  static inline u64 get_unaligned_le64(const void *p)
064106a9 Harvey Harrison 2008-04-29  51  {
064106a9 Harvey Harrison 2008-04-29  52  	return __get_unaligned_le64((const u8 *)p);
064106a9 Harvey Harrison 2008-04-29  53  }
064106a9 Harvey Harrison 2008-04-29  54  
064106a9 Harvey Harrison 2008-04-29 @55  static inline void put_unaligned_le16(u16 val, void *p)
064106a9 Harvey Harrison 2008-04-29  56  {
064106a9 Harvey Harrison 2008-04-29  57  	__put_unaligned_le16(val, p);
064106a9 Harvey Harrison 2008-04-29  58  }
064106a9 Harvey Harrison 2008-04-29  59  
064106a9 Harvey Harrison 2008-04-29 @60  static inline void put_unaligned_le32(u32 val, void *p)
064106a9 Harvey Harrison 2008-04-29  61  {
064106a9 Harvey Harrison 2008-04-29  62  	__put_unaligned_le32(val, p);
064106a9 Harvey Harrison 2008-04-29  63  }
064106a9 Harvey Harrison 2008-04-29  64  
064106a9 Harvey Harrison 2008-04-29 @65  static inline void put_unaligned_le64(u64 val, void *p)
064106a9 Harvey Harrison 2008-04-29  66  {
064106a9 Harvey Harrison 2008-04-29  67  	__put_unaligned_le64(val, p);
064106a9 Harvey Harrison 2008-04-29  68  }
064106a9 Harvey Harrison 2008-04-29  69  

:::::: The code at line 60 was first introduced by commit
:::::: 064106a91be5e76cb42c1ddf5d3871e3a1bd2a23 kernel: add common infrastructure for unaligned access

:::::: TO: Harvey Harrison <harvey.harrison@gmail.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 51721 bytes --]

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

* Re: [PATCH] mwifiex: Use put_unaligned_le32
  2017-10-04 18:28 [PATCH] mwifiex: Use put_unaligned_le32 Himanshu Jha
  2017-10-05  7:23 ` Kalle Valo
  2017-10-07  3:31 ` kbuild test robot
@ 2017-10-07  5:17 ` kbuild test robot
  2 siblings, 0 replies; 11+ messages in thread
From: kbuild test robot @ 2017-10-07  5:17 UTC (permalink / raw)
  To: Himanshu Jha
  Cc: kbuild-all, amitkarwar, nishants, gbhat, huxm, kvalo,
	linux-wireless, netdev, linux-kernel, Himanshu Jha

[-- Attachment #1: Type: text/plain, Size: 12648 bytes --]

Hi Himanshu,

[auto build test ERROR on wireless-drivers-next/master]
[also build test ERROR on v4.14-rc3 next-20170929]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Himanshu-Jha/mwifiex-Use-put_unaligned_le32/20171007-095017
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
config: openrisc-allyesconfig (attached as .config)
compiler: or1k-linux-gcc (GCC) 5.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=openrisc 

All errors (new ones prefixed by >>):

   In file included from arch/openrisc/include/asm/unaligned.h:42:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_memmove.h:6:19: error: redefinition of 'get_unaligned_be16'
    static inline u16 get_unaligned_be16(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:22:28: note: previous definition of 'get_unaligned_be16' was here
    static __always_inline u16 get_unaligned_be16(const void *p)
                               ^
   In file included from arch/openrisc/include/asm/unaligned.h:42:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_memmove.h:11:19: error: redefinition of 'get_unaligned_be32'
    static inline u32 get_unaligned_be32(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:27:28: note: previous definition of 'get_unaligned_be32' was here
    static __always_inline u32 get_unaligned_be32(const void *p)
                               ^
   In file included from arch/openrisc/include/asm/unaligned.h:42:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_memmove.h:16:19: error: redefinition of 'get_unaligned_be64'
    static inline u64 get_unaligned_be64(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:32:28: note: previous definition of 'get_unaligned_be64' was here
    static __always_inline u64 get_unaligned_be64(const void *p)
                               ^
   In file included from arch/openrisc/include/asm/unaligned.h:42:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_memmove.h:21:20: error: redefinition of 'put_unaligned_be16'
    static inline void put_unaligned_be16(u16 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:52:29: note: previous definition of 'put_unaligned_be16' was here
    static __always_inline void put_unaligned_be16(u16 val, void *p)
                                ^
   In file included from arch/openrisc/include/asm/unaligned.h:42:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_memmove.h:26:20: error: redefinition of 'put_unaligned_be32'
    static inline void put_unaligned_be32(u32 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:57:29: note: previous definition of 'put_unaligned_be32' was here
    static __always_inline void put_unaligned_be32(u32 val, void *p)
                                ^
   In file included from arch/openrisc/include/asm/unaligned.h:42:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
>> include/linux/unaligned/be_memmove.h:31:20: error: redefinition of 'put_unaligned_be64'
    static inline void put_unaligned_be64(u64 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:62:29: note: previous definition of 'put_unaligned_be64' was here
    static __always_inline void put_unaligned_be64(u64 val, void *p)
                                ^
   In file included from arch/openrisc/include/asm/unaligned.h:43:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
   include/linux/unaligned/le_byteshift.h:40:19: error: redefinition of 'get_unaligned_le16'
    static inline u16 get_unaligned_le16(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:7:28: note: previous definition of 'get_unaligned_le16' was here
    static __always_inline u16 get_unaligned_le16(const void *p)
                               ^
   In file included from arch/openrisc/include/asm/unaligned.h:43:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
   include/linux/unaligned/le_byteshift.h:45:19: error: redefinition of 'get_unaligned_le32'
    static inline u32 get_unaligned_le32(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:12:28: note: previous definition of 'get_unaligned_le32' was here
    static __always_inline u32 get_unaligned_le32(const void *p)
                               ^
   In file included from arch/openrisc/include/asm/unaligned.h:43:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
   include/linux/unaligned/le_byteshift.h:50:19: error: redefinition of 'get_unaligned_le64'
    static inline u64 get_unaligned_le64(const void *p)
                      ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:17:28: note: previous definition of 'get_unaligned_le64' was here
    static __always_inline u64 get_unaligned_le64(const void *p)
                               ^
   In file included from arch/openrisc/include/asm/unaligned.h:43:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
   include/linux/unaligned/le_byteshift.h:55:20: error: redefinition of 'put_unaligned_le16'
    static inline void put_unaligned_le16(u16 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:37:29: note: previous definition of 'put_unaligned_le16' was here
    static __always_inline void put_unaligned_le16(u16 val, void *p)
                                ^
   In file included from arch/openrisc/include/asm/unaligned.h:43:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
   include/linux/unaligned/le_byteshift.h:60:20: error: redefinition of 'put_unaligned_le32'
    static inline void put_unaligned_le32(u32 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:42:29: note: previous definition of 'put_unaligned_le32' was here
    static __always_inline void put_unaligned_le32(u32 val, void *p)
                                ^
   In file included from arch/openrisc/include/asm/unaligned.h:43:0,
                    from include/linux/etherdevice.h:28,
                    from include/linux/ieee80211.h:22,
                    from drivers/net//wireless/marvell/mwifiex/decl.h:28,
                    from drivers/net//wireless/marvell/mwifiex/cmdevt.c:21:
   include/linux/unaligned/le_byteshift.h:65:20: error: redefinition of 'put_unaligned_le64'
    static inline void put_unaligned_le64(u64 val, void *p)
                       ^
   In file included from drivers/net//wireless/marvell/mwifiex/cmdevt.c:20:0:
   include/linux/unaligned/access_ok.h:47:29: note: previous definition of 'put_unaligned_le64' was here
    static __always_inline void put_unaligned_le64(u64 val, void *p)
                                ^

vim +/get_unaligned_be16 +6 include/linux/unaligned/be_memmove.h

064106a9 Harvey Harrison 2008-04-29   5  
064106a9 Harvey Harrison 2008-04-29  @6  static inline u16 get_unaligned_be16(const void *p)
064106a9 Harvey Harrison 2008-04-29   7  {
064106a9 Harvey Harrison 2008-04-29   8  	return __get_unaligned_memmove16((const u8 *)p);
064106a9 Harvey Harrison 2008-04-29   9  }
064106a9 Harvey Harrison 2008-04-29  10  
064106a9 Harvey Harrison 2008-04-29 @11  static inline u32 get_unaligned_be32(const void *p)
064106a9 Harvey Harrison 2008-04-29  12  {
064106a9 Harvey Harrison 2008-04-29  13  	return __get_unaligned_memmove32((const u8 *)p);
064106a9 Harvey Harrison 2008-04-29  14  }
064106a9 Harvey Harrison 2008-04-29  15  
064106a9 Harvey Harrison 2008-04-29 @16  static inline u64 get_unaligned_be64(const void *p)
064106a9 Harvey Harrison 2008-04-29  17  {
064106a9 Harvey Harrison 2008-04-29  18  	return __get_unaligned_memmove64((const u8 *)p);
064106a9 Harvey Harrison 2008-04-29  19  }
064106a9 Harvey Harrison 2008-04-29  20  
064106a9 Harvey Harrison 2008-04-29 @21  static inline void put_unaligned_be16(u16 val, void *p)
064106a9 Harvey Harrison 2008-04-29  22  {
064106a9 Harvey Harrison 2008-04-29  23  	__put_unaligned_memmove16(val, p);
064106a9 Harvey Harrison 2008-04-29  24  }
064106a9 Harvey Harrison 2008-04-29  25  
064106a9 Harvey Harrison 2008-04-29 @26  static inline void put_unaligned_be32(u32 val, void *p)
064106a9 Harvey Harrison 2008-04-29  27  {
064106a9 Harvey Harrison 2008-04-29  28  	__put_unaligned_memmove32(val, p);
064106a9 Harvey Harrison 2008-04-29  29  }
064106a9 Harvey Harrison 2008-04-29  30  
064106a9 Harvey Harrison 2008-04-29 @31  static inline void put_unaligned_be64(u64 val, void *p)
064106a9 Harvey Harrison 2008-04-29  32  {
064106a9 Harvey Harrison 2008-04-29  33  	__put_unaligned_memmove64(val, p);
064106a9 Harvey Harrison 2008-04-29  34  }
064106a9 Harvey Harrison 2008-04-29  35  

:::::: The code at line 6 was first introduced by commit
:::::: 064106a91be5e76cb42c1ddf5d3871e3a1bd2a23 kernel: add common infrastructure for unaligned access

:::::: TO: Harvey Harrison <harvey.harrison@gmail.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 42911 bytes --]

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

end of thread, other threads:[~2017-10-07  5:18 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-04 18:28 [PATCH] mwifiex: Use put_unaligned_le32 Himanshu Jha
2017-10-05  7:23 ` Kalle Valo
2017-10-05  8:34   ` Himanshu Jha
2017-10-05  8:41     ` Kalle Valo
2017-10-05 15:22       ` Himanshu Jha
2017-10-05 18:02         ` Brian Norris
2017-10-05 19:07           ` Himanshu Jha
2017-10-05 21:54             ` Igor Mitsyanko
2017-10-06 13:31             ` Kalle Valo
2017-10-07  3:31 ` kbuild test robot
2017-10-07  5:17 ` kbuild test robot

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.