2015-02-02 20:37:49

by Chen Gang

[permalink] [raw]
Subject: [PATCH] bluetooth: hci_sock: Use type cast "(void *)" to avoid building warnings

The related warning (with allmodconfig under xtensa):

net/bluetooth/hci_sock.c: In function 'hci_sock_sendmsg':
net/bluetooth/hci_sock.c:955:8: warning: passing argument 2 of 'hci_test_bit' discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
&hci_sec_filter.ocf_mask[ogf])) &&
^
net/bluetooth/hci_sock.c:49:19: note: expected 'void *' but argument is of type 'const __u32 (*)[4] {aka const unsigned int (*)[4]}'
static inline int hci_test_bit(int nr, void *addr)
^

Signed-off-by: Chen Gang <[email protected]>
---
net/bluetooth/hci_sock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
index 1d65c5b..80c5a79 100644
--- a/net/bluetooth/hci_sock.c
+++ b/net/bluetooth/hci_sock.c
@@ -952,7 +952,7 @@ static int hci_sock_sendmsg(struct kiocb *iocb, struct socket *sock,

if (((ogf > HCI_SFLT_MAX_OGF) ||
!hci_test_bit(ocf & HCI_FLT_OCF_BITS,
- &hci_sec_filter.ocf_mask[ogf])) &&
+ (void *)&hci_sec_filter.ocf_mask[ogf])) &&
!capable(CAP_NET_RAW)) {
err = -EPERM;
goto drop;
--
1.9.3


2015-02-02 21:07:06

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] bluetooth: hci_sock: Use type cast "(void *)" to avoid building warnings

On 2/3/15 04:39, Joe Perches wrote:
> On Tue, 2015-02-03 at 04:37 +0800, Chen Gang S wrote:
>> The related warning (with allmodconfig under xtensa):
> []
>> diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
> []
>> @@ -952,7 +952,7 @@ static int hci_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
>>
>> if (((ogf > HCI_SFLT_MAX_OGF) ||
>> !hci_test_bit(ocf & HCI_FLT_OCF_BITS,
>> - &hci_sec_filter.ocf_mask[ogf])) &&
>> + (void *)&hci_sec_filter.ocf_mask[ogf])) &&
>> !capable(CAP_NET_RAW)) {
>> err = -EPERM;
>> goto drop;
>
> Probably better to change the hci_test_bit to take const void *
>
> static inline int hci_test_bit(int nr, void *addr)
> {
> return *((__u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31));
> }
>

Yeah, thanks. It should be fixed like what you said above, I shall send
patch v2 for it.


Thanks.
--
Chen Gang

Open, share, and attitude like air, water, and life which God blessed

2015-02-02 20:39:58

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] bluetooth: hci_sock: Use type cast "(void *)" to avoid building warnings

On Tue, 2015-02-03 at 04:37 +0800, Chen Gang S wrote:
> The related warning (with allmodconfig under xtensa):
[]
> diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
[]
> @@ -952,7 +952,7 @@ static int hci_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
>
> if (((ogf > HCI_SFLT_MAX_OGF) ||
> !hci_test_bit(ocf & HCI_FLT_OCF_BITS,
> - &hci_sec_filter.ocf_mask[ogf])) &&
> + (void *)&hci_sec_filter.ocf_mask[ogf])) &&
> !capable(CAP_NET_RAW)) {
> err = -EPERM;
> goto drop;

Probably better to change the hci_test_bit to take const void *

static inline int hci_test_bit(int nr, void *addr)
{
return *((__u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31));
}