From: Jiri Slaby <jslaby@suse.cz>
To: Marcel Holtmann <marcel@holtmann.org>
Cc: Johan Hedberg <johan.hedberg@gmail.com>,
BlueZ development <linux-bluetooth@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"Gustavo F. Padovan" <gustavo@padovan.org>
Subject: Re: [PATCH v2 1/1] Bluetooth: make hci_test_bit's addr const
Date: Fri, 27 Feb 2015 17:26:34 +0100 [thread overview]
Message-ID: <54F09ABA.3080307@suse.cz> (raw)
In-Reply-To: <21570C6D-0C2F-40CA-9100-5A5CC7D1CEAB@holtmann.org>
On 02/19/2015, 05:10 PM, Marcel Holtmann wrote:
> Hi Jiri,
>
>> gcc5 warns about passing a const array to hci_test_bit which takes a
>> non-const pointer:
>> 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)
>> ^
>>
>> So make 'addr' 'const void *'.
>>
>> [v2] make the pointer in the cast const too.
>>
>> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
>> Cc: Marcel Holtmann <marcel@holtmann.org>
>> Cc: Gustavo Padovan <gustavo@padovan.org>
>> Cc: Johan Hedberg <johan.hedberg@gmail.com>
>> ---
>> net/bluetooth/hci_sock.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
>> index 1d65c5be7c82..d1a7d67619d8 100644
>> --- a/net/bluetooth/hci_sock.c
>> +++ b/net/bluetooth/hci_sock.c
>> @@ -46,9 +46,9 @@ struct hci_pinfo {
>> unsigned short channel;
>> };
>>
>> -static inline int hci_test_bit(int nr, void *addr)
>> +static inline int hci_test_bit(int nr, const void *addr)
>> {
>> - return *((__u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31));
>> + return *((const __u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31));
>> }
>
> we had a lengthy discussion about this before. I am reluctant to change any of this until we have a test tool that proofs this does not break userspace API compatibility.
>
> I don't see how just adding const would break anything, but I cautious since this code is pretty much a big mistake that we are carrying around for almost 14 years now.
Yeah, I understand, but relying on the compiler is worse in this case, I
think. Here, the function casts away const from a const array, which is
undefined behaviour (6.7.3 of the standard).
So all in all I believe applying this fix cannot make the code worse.
thanks,
--
js
suse labs
next prev parent reply other threads:[~2015-02-27 16:26 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-19 13:56 [PATCH 1/1] Bluetooth: make hci_test_bit's addr const Jiri Slaby
2015-02-19 14:18 ` Jiri Slaby
2015-02-19 14:20 ` [PATCH v2 " Jiri Slaby
2015-02-19 16:10 ` Marcel Holtmann
2015-02-27 16:26 ` Jiri Slaby [this message]
2015-02-27 17:32 ` Marcel Holtmann
2015-02-27 17:31 ` Marcel Holtmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54F09ABA.3080307@suse.cz \
--to=jslaby@suse.cz \
--cc=gustavo@padovan.org \
--cc=johan.hedberg@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marcel@holtmann.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.