From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: akpm@linux-foundation.org
Cc: linux-scsi@vger.kernel.org, sam@ravnborg.org, gilbert_wu@adaptec.com
Subject: Re: [patch 06/17] scsi: fix section mismatch in aic94xx
Date: Sun, 30 Mar 2008 13:05:04 -0500 [thread overview]
Message-ID: <1206900305.4224.78.camel@localhost.localdomain> (raw)
In-Reply-To: <200803282148.m2SLma9o012231@imap1.linux-foundation.org>
On Fri, 2008-03-28 at 14:48 -0700, akpm@linux-foundation.org wrote:
> From: Sam Ravnborg <sam@ravnborg.org>
>
> Fix following warnings:
> WARNING: vmlinux.o(.data+0x17aa88): Section mismatch in reference from the variable asd_pcidev_data to the function .devinit.text:asd_aic9410_setup()
> WARNING: vmlinux.o(.data+0x17aa98): Section mismatch in reference from the variable asd_pcidev_data to the function .devinit.text:asd_aic9410_setup()
> WARNING: vmlinux.o(.data+0x17aaa8): Section mismatch in reference from the variable asd_pcidev_data to the function .devinit.text:asd_aic9405_setup()
>
> asd_pcidev_data is only used by __devinit asd_pci_probe. So mark is const and
> annotate it __devinitconst to fix the warnings.
>
> [akpm@linux-foundation.org: fix warning]
> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> Cc: Gilbert Wu <gilbert_wu@adaptec.com>
> Cc: James Bottomley <James.Bottomley@SteelEye.com>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> ---
>
> drivers/scsi/aic94xx/aic94xx_init.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff -puN drivers/scsi/aic94xx/aic94xx_init.c~scsi-fix-section-mismatch-in-aic94xx drivers/scsi/aic94xx/aic94xx_init.c
> --- a/drivers/scsi/aic94xx/aic94xx_init.c~scsi-fix-section-mismatch-in-aic94xx
> +++ a/drivers/scsi/aic94xx/aic94xx_init.c
> @@ -529,10 +529,10 @@ static void asd_remove_dev_attrs(struct
> /* The first entry, 0, is used for dynamic ids, the rest for devices
> * we know about.
> */
> -static struct asd_pcidev_struct {
> +static const struct asd_pcidev_struct {
> const char * name;
> int (*setup)(struct asd_ha_struct *asd_ha);
> -} asd_pcidev_data[] = {
> +} asd_pcidev_data[] __devinitconst = {
> /* Id 0 is used for dynamic ids. */
> { .name = "Adaptec AIC-94xx SAS/SATA Host Adapter",
> .setup = asd_aic9410_setup
If your tools say this patch is correct, then the tools are wrong.
This patch actually takes something that's functionally correct but your
tools can't see it and transforms it to something that's actually
functionally wrong ... and the tool should spot that.
the problem is the contents of the .name field ... they can't live in
the devinit rodata section because we actually take a pointer to it (as
asd_ha->name and later ha->sas_ha_name) in asd_pci_probe() that lives
the entire lifetime of the driver and is used. derefing it will trigger
a bug after the __devinit section is discarded in the non hotplug case.
James
next prev parent reply other threads:[~2008-03-30 18:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-28 21:48 [patch 06/17] scsi: fix section mismatch in aic94xx akpm
2008-03-30 18:05 ` James Bottomley [this message]
2008-03-30 18:44 ` Sam Ravnborg
2008-03-31 14:46 ` James Bottomley
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=1206900305.4224.78.camel@localhost.localdomain \
--to=james.bottomley@hansenpartnership.com \
--cc=akpm@linux-foundation.org \
--cc=gilbert_wu@adaptec.com \
--cc=linux-scsi@vger.kernel.org \
--cc=sam@ravnborg.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox