linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Felipe Balbi <balbi@ti.com>
Cc: linux-usb@vger.kernel.org,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 2/9] scripts/modpost: add a exception for USB gadget drivers
Date: Wed, 15 Aug 2012 21:59:12 +0200	[thread overview]
Message-ID: <1345060759-18091-3-git-send-email-bigeasy@linutronix.de> (raw)
In-Reply-To: <1345060759-18091-1-git-send-email-bigeasy@linutronix.de>

The "driver" struct for a gadget driver is named *_driver. On module
load, the gadget expects a UDC driver to be loaded and avaiable. If this
is not the case => -ENODEV and bye bye. That means that the gadget
driver is initialized immediately. The initialization process includes
calling ->bind() for the gadget driver. Therefore it is okay to put this
in __init. It will never be called again, we don't (yet) allow two
gadgets of the same kind to be ->bind() again.

Commit 07a18bd716 ("usb gadget: don't save bind callback in struct
usb_composite_driver") move the ->bind() member from the struct to an
argument.
I'm reverting this and adding this exception. For g_zero we save around
400bytes. I'm not having the conversion about how important it is to
save 400 bytes. I wait for configfs interface for the gadget subsystem.
This will remove the __init from the ->bind() because we will be able to
call ->bind() more than once and _after_ the init has been dropped.

Cc: linux-kernel@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 scripts/mod/modpost.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 68e9f5e..5e30776 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -920,6 +920,9 @@ static const char *head_sections[] = { ".head.text*", NULL };
 static const char *linker_symbols[] =
 	{ "__init_begin", "_sinittext", "_einittext", NULL };
 
+static const char *const driver_sym[] = { "*_driver", NULL };
+static const char *const gadget_bind[] = { "*_bind", NULL };
+
 enum mismatch {
 	TEXT_TO_ANY_INIT,
 	DATA_TO_ANY_INIT,
@@ -1129,6 +1132,13 @@ static int secref_whitelist(const struct sectioncheck *mismatch,
 	    match(fromsym, mismatch->symbol_white_list))
 		return 0;
 
+	/* Check for pattern 2a */
+	if (match(tosec, init_exit_sections) &&
+	    match(fromsec, data_sections) &&
+	    match(fromsym, driver_sym) &&
+	    match(tosym, gadget_bind))
+		return 0;
+
 	/* Check for pattern 3 */
 	if (match(fromsec, head_sections) &&
 	    match(tosec, init_sections))
-- 
1.7.10.4


       reply	other threads:[~2012-08-15 19:59 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1345060759-18091-1-git-send-email-bigeasy@linutronix.de>
2012-08-15 19:59 ` Sebastian Andrzej Siewior [this message]
2012-08-15 20:14   ` [PATCH 2/9] scripts/modpost: add a exception for USB gadget drivers Sam Ravnborg
2012-08-17 15:36     ` Sebastian Andrzej Siewior
2012-08-16 13:05   ` ABRAHAM, KISHON VIJAY
2012-08-16 13:03     ` Felipe Balbi
2012-08-16 14:26       ` ABRAHAM, KISHON VIJAY

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=1345060759-18091-3-git-send-email-bigeasy@linutronix.de \
    --to=bigeasy@linutronix.de \
    --cc=balbi@ti.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).