lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sat, 13 Jun 2009 22:46:46 +0200
From:	Ingo Molnar <mingo@...e.hu>
To:	Linus Torvalds <torvalds@...ux-foundation.org>
Cc:	Randy Dunlap <randy.dunlap@...cle.com>,
	linux-kernel@...r.kernel.org, Michael Chan <mchan@...adcom.com>,
	"David S. Miller" <davem@...emloft.net>,
	James Bottomley <James.Bottomley@...senPartnership.com>
Subject: Re: -git tree build failure #2: drivers/net/cnic.c:2520: error: implicit declaration of function ‘__symbol_get’


* Ingo Molnar <mingo@...e.hu> wrote:

> I still had the window open that had the build failure:
> 
>   LD      sound/pci/snd-es1968.o
>   CC      fs/btrfs/zlib.o
> drivers/net/cnic.c: In function ‘init_bnx2_cnic’:
> drivers/net/cnic.c:2524: error: implicit declaration of function 
> ‘__symbol_get’
> drivers/net/cnic.c:2524: warning: assignment makes pointer from 
> integer without a cast
> distcc[22461] ERROR: compile drivers/net/cnic.c on ph/32 failed
> make[2]: *** [drivers/net/cnic.o] Error 1
> make[2]: *** Waiting for unfinished jobs....
>   CC      drivers/ide/trm290.o
>   CC      drivers/scsi/cxgb3i/cxgb3i_ddp.o
>   LD      sound/pci/snd-fm801.o
>   CC      net/sched/sch_drr.o
>   CC      fs/cifs/xattr.o
>   CC      drivers/scsi/mpt2sas/mpt2sas_base.o
> 
> So it's real - even if the fix is bogus. But it's a different 
> config - i'll now try to figure out which one it is and why the 
> build fails ...

Yes, the bug is real - the fix is not.

Here is the code:

static struct cnic_dev *init_bnx2_cnic(struct net_device *dev)
{
        struct pci_dev *pdev;
        struct cnic_dev *cdev;
        struct cnic_local *cp;
        struct cnic_eth_dev *ethdev = NULL;
        struct cnic_eth_dev *(*probe)(void *) = NULL;

        probe = __symbol_get("bnx2_cnic_probe");
        if (probe) {
                ethdev = (*probe)(dev);
                symbol_put_addr(probe);
        }

and that's a very rare use of __symbol_get(). The problem is that 
the cnic driver can be built into the kernel too (!CONFIG_MODULES) 
but __symbol_get() is (obviously) a modules-code internal function 
really. __symbol_get() is only defined in the CONFIG_MODULES section 
of module.h.

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ