From: Daniel Drake <dsd@gentoo.org>
To: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: jack@hawkeye.stone.uk.eu.org, linux-kernel@vger.kernel.org,
trivial@kernel.org
Subject: Re: [Patch 14/16] Remove needless kmalloc casts in the zd1211rw drivers.
Date: Tue, 31 Jul 2007 22:09:00 -0400 [thread overview]
Message-ID: <46AFEB3C.6020601@gentoo.org> (raw)
In-Reply-To: <46AFDDD8.8050903@s5r6.in-berlin.de>
Stefan Richter wrote:
>> NAK: this patch adds a sparse warning
>> zd_chip.c:116:15: warning: implicit cast to nocast type
>
> What does this warning mean? a16 is defined as zd_addr_t *.
zd_addr_t is defined as
typedef u16 __nocast zd_addr_t;
The __nocast annotation forces us to use explicit casts for values of
this type. This is really useful as we have functions which take an
address and a value (e.g. register writes). It's very easy to get them
in the wrong order and have a non-obvious bug. With this mechanism,
sparse helps us avoid this.
The case with pointers may be a little unintuitive, but it's a small
price to pay for a bug that bit us hard once before...
The number of other places we have to cast is very small due to use of
the preprocessor. For example we have:
#define ZD_ADDR(base, offset) \
((zd_addr_t)(((base) & ADDR_BASE_MASK) | ((offset) & ADDR_OFFSET_MASK)))
#define CTL_REG(offset) ZD_ADDR(CR_BASE, offset) /* byte addressing */
Then we have a few hundred registers defined in terms of CTL_REG.
> Also, why is there this cast right before that?
>
> zd_addr_t *a16 = (zd_addr_t *)NULL;
For similar reasons.
Daniel
next prev parent reply other threads:[~2007-08-01 2:10 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-31 12:53 [Patch 00/16] Remove unnecessary kmalloc casts jack
2007-07-31 12:53 ` [Patch 01/16] Remove unnecessary kmalloc casts from the cris arch jack
2007-08-01 1:06 ` Stefan Richter
2007-07-31 12:53 ` [Patch 02/16] Remove unnecessary kmalloc casts from the mips arch jack
2007-07-31 14:15 ` Christian Borntraeger
2007-07-31 15:15 ` Rene Herman
2007-07-31 12:53 ` [Patch 03/16] Remove unnecessary kmalloc casts from the powerpc arch jack
2007-07-31 12:53 ` [Patch 04/16] Remove unnecessary kmalloc casts from the sparc arch jack
2007-07-31 14:09 ` WANG Cong
2007-07-31 12:53 ` [Patch 05/16] Remove unnecessary kmalloc casts in the drivers subdirectory jack
2007-08-01 0:53 ` Stefan Richter
2007-07-31 12:53 ` [Patch 06/16] This removes unnecessary kmalloc casts and corrects a test for kmalloc failure jack
2007-07-31 14:17 ` Christian Borntraeger
2007-07-31 12:53 ` [Patch 07/16] Remove unnecessary kmalloc casts in the mtd drivers jack
2007-07-31 12:53 ` [Patch 08/16] Remove unnecessary kmalloc casts in the parisc drivers jack
2007-07-31 14:06 ` Christian Borntraeger
2007-07-31 12:53 ` [Patch 09/16] Remove unnecessary kmalloc casts in the pci subsystem jack
2007-07-31 13:53 ` Christian Borntraeger
2007-07-31 14:30 ` Satyam Sharma
2007-07-31 14:46 ` WANG Cong
2007-07-31 16:05 ` Satyam Sharma
2007-07-31 16:10 ` Greg KH
2007-07-31 16:20 ` Andreas Schwab
2007-07-31 17:47 ` Greg KH
2007-07-31 18:06 ` Satyam Sharma
2007-08-01 4:02 ` Paul Mackerras
2007-07-31 20:19 ` David Miller
2007-07-31 12:53 ` [Patch 10/16] Remove unnecessary kmalloc casts in the irda drivers jack
2007-07-31 12:53 ` [Patch 11/16] Remove unnecessary kmalloc casts in drivers/net jack
2007-07-31 14:16 ` Christian Borntraeger
2007-07-31 12:53 ` [Patch 12/16] Remove unnecessary kmalloc casts in the libertas drivers jack
2007-07-31 12:53 ` [Patch 13/16] Remove needless kmalloc casts in the wireless drivers jack
2007-07-31 12:53 ` [Patch 14/16] Remove needless kmalloc casts in the zd1211rw drivers jack
2007-07-31 14:18 ` Daniel Drake
2007-08-01 1:11 ` Stefan Richter
2007-08-01 2:09 ` Daniel Drake [this message]
2007-07-31 12:53 ` [Patch 15/16] Remove unnecesary kmalloc casts in the scsi drivers jack
2007-07-31 14:20 ` James Bottomley
2007-07-31 12:53 ` [Patch 16/16] Remove unnecessary kmalloc casts in the jfs filesystem jack
2007-07-31 13:14 ` Dave Kleikamp
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=46AFEB3C.6020601@gentoo.org \
--to=dsd@gentoo.org \
--cc=jack@hawkeye.stone.uk.eu.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stefanr@s5r6.in-berlin.de \
--cc=trivial@kernel.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.