From patchwork Tue Nov 5 23:07:41 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Rothwell X-Patchwork-Id: 3144191 Return-Path: X-Original-To: patchwork-linux-kbuild@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 286A5BEEB2 for ; Tue, 5 Nov 2013 23:07:52 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 663DA205DA for ; Tue, 5 Nov 2013 23:07:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7B3BE205AC for ; Tue, 5 Nov 2013 23:07:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755550Ab3KEXHt (ORCPT ); Tue, 5 Nov 2013 18:07:49 -0500 Received: from haggis.pcug.org.au ([203.10.76.10]:58026 "EHLO members.tip.net.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755494Ab3KEXHt (ORCPT ); Tue, 5 Nov 2013 18:07:49 -0500 Received: from canb.auug.org.au (ibmaus65.lnk.telstra.net [165.228.126.9]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by members.tip.net.au (Postfix) with ESMTPSA id EC3E6164114; Wed, 6 Nov 2013 10:07:46 +1100 (EST) Date: Wed, 6 Nov 2013 10:07:41 +1100 From: Stephen Rothwell To: Andi Kleen Cc: Rusty Russell , linux-next@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org Subject: Re: linux-next: build warnings after merge of the modules tree Message-Id: <20131106100741.6dd82590c3a24f6a32fce247@canb.auug.org.au> In-Reply-To: <20131105141702.GE1962@tassilo.jf.intel.com> References: <20131104134134.48665968dd006e3310333993@canb.auug.org.au> <87fvrba8su.fsf@rustcorp.com.au> <20131105141702.GE1962@tassilo.jf.intel.com> X-Mailer: Sylpheed 3.4.0beta4 (GTK+ 2.24.22; i486-pc-linux-gnu) Mime-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_TVD_MIME_EPI, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Hi Rusty, On Tue, 5 Nov 2013 06:17:02 -0800 Andi Kleen wrote: > > > modpost creates an entry when it sees the CRC, then when it sees the > > actual symbol, it complains that it's seen it before. The preloaded > > flag already exists for the equivalent case where we loaded from > > Module.symvers, so use that. > > Looks good. Thanks for fixing. I added this as a merge fix today (thanks): From: Rusty Russell Subject: modpost: fix bogus 'exported twice' warnings. Andi's change in e0f244c63fc9 ("asmlinkage, module: Make ksymtab and kcrctab symbols and __this_module __visible") make the crc appear first in the symbol table. modpost creates an entry when it sees the CRC, then when it sees the actual symbol, it complains that it's seen it before. The preloaded flag already exists for the equivalent case where we loaded from Module.symvers, so use that. Reported-by: Stephen Rothwell Tested-by: Andi Kleen Signed-off-by: Rusty Russell diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 9b873ac6ed7b..5c677a3e7487 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -164,7 +164,7 @@ struct symbol { unsigned int vmlinux:1; /* 1 if symbol is defined in vmlinux */ unsigned int kernel:1; /* 1 if symbol is from kernel * (only for external modules) **/ - unsigned int preloaded:1; /* 1 if symbol from Module.symvers */ + unsigned int preloaded:1; /* 1 if symbol from Module.symvers, or crc */ enum export export; /* Type of export */ char name[0]; }; @@ -332,8 +332,11 @@ static void sym_update_crc(const char *name, struct module *mod, { struct symbol *s = find_symbol(name); - if (!s) + if (!s) { s = new_symbol(name, mod, export); + /* Don't complain when we find it later. */ + s->preloaded = 1; + } s->crc = crc; s->crc_valid = 1; }