diff mbox

usb: ehci: mark unlink_empty_async_suspended() as __maybe_unused

Message ID 201303282109.47130.arnd@arndb.de (mailing list archive)
State New, archived
Headers show

Commit Message

Arnd Bergmann March 28, 2013, 9:09 p.m. UTC
Patch 4d053fdac3 "usb: ehci: unlink_empty_async_suspended() only used
with CONFIG_PM" tried to hide the unlink_empty_async_suspended function
inside of an #ifdef to work around an unused function warning.

Unfortunately that had the effect of introducing a new warning:

drivers/usb/host/ehci-q.c:1297:13: warning: 'unlink_empty_async_suspended' 
	declared 'static' but never defined [-Wunused-function]

While we could add another #ifdef around the function declaration to avoid
this, a nicer solution is to mark it as __maybe_unused, which will let
gcc silently drop the function definition when it is not needed.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---

Comments

Arnd Bergmann March 28, 2013, 9:16 p.m. UTC | #1
On Thursday 28 March 2013, Arnd Bergmann wrote:
> Patch 4d053fdac3 "usb: ehci: unlink_empty_async_suspended() only used
> with CONFIG_PM" tried to hide the unlink_empty_async_suspended function
> inside of an #ifdef to work around an unused function warning.

Hi Greg,

Apparently the warning is now also in 3.8.5, so you might want to backport
this fix as well after you send it upstream.

	Arnd
Tony Prisk March 28, 2013, 9:20 p.m. UTC | #2
On 29/03/13 10:16, Arnd Bergmann wrote:
> On Thursday 28 March 2013, Arnd Bergmann wrote:
>> Patch 4d053fdac3 "usb: ehci: unlink_empty_async_suspended() only used
>> with CONFIG_PM" tried to hide the unlink_empty_async_suspended function
>> inside of an #ifdef to work around an unused function warning.
> Hi Greg,
>
> Apparently the warning is now also in 3.8.5, so you might want to backport
> this fix as well after you send it upstream.
>
> 	Arnd
Grr, my bad - I originally wrote the patch with the forward decl 
#ifdef'd as well, but Alan pointed out that it didn't need to be. I 
thought I recompiled it after the change, but obviously not.

Thanks Arnd,

Regards
Tony P
Alan Stern March 29, 2013, 2:05 p.m. UTC | #3
On Thu, 28 Mar 2013, Arnd Bergmann wrote:

> Patch 4d053fdac3 "usb: ehci: unlink_empty_async_suspended() only used
> with CONFIG_PM" tried to hide the unlink_empty_async_suspended function
> inside of an #ifdef to work around an unused function warning.
> 
> Unfortunately that had the effect of introducing a new warning:
> 
> drivers/usb/host/ehci-q.c:1297:13: warning: 'unlink_empty_async_suspended' 
> 	declared 'static' but never defined [-Wunused-function]
> 
> While we could add another #ifdef around the function declaration to avoid
> this, a nicer solution is to mark it as __maybe_unused, which will let
> gcc silently drop the function definition when it is not needed.

IMO the compiler is being stupid.  -Wunused-function should warn 
about functions that are defined but not called, not about functions 
that are declared but not defined.  Grumble...

Anyway yes, this is a good fix.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Alan Stern March 29, 2013, 2:05 p.m. UTC | #4
On Fri, 29 Mar 2013, Tony Prisk wrote:

> On 29/03/13 10:16, Arnd Bergmann wrote:
> > On Thursday 28 March 2013, Arnd Bergmann wrote:
> >> Patch 4d053fdac3 "usb: ehci: unlink_empty_async_suspended() only used
> >> with CONFIG_PM" tried to hide the unlink_empty_async_suspended function
> >> inside of an #ifdef to work around an unused function warning.
> > Hi Greg,
> >
> > Apparently the warning is now also in 3.8.5, so you might want to backport
> > this fix as well after you send it upstream.
> >
> > 	Arnd
> Grr, my bad - I originally wrote the patch with the forward decl 
> #ifdef'd as well, but Alan pointed out that it didn't need to be. I 
> thought I recompiled it after the change, but obviously not.

It's my fault too.  I didn't realize the compiler would issue a warning 
about a static declaration with no definition.

Alan Stern
diff mbox

Patch

diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index 7562d76..d34b399 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -1293,9 +1293,8 @@  static void unlink_empty_async(struct ehci_hcd *ehci)
 	}
 }
 
-#ifdef CONFIG_PM
 /* The root hub is suspended; unlink all the async QHs */
-static void unlink_empty_async_suspended(struct ehci_hcd *ehci)
+static void __maybe_unused unlink_empty_async_suspended(struct ehci_hcd *ehci)
 {
 	struct ehci_qh		*qh;
 
@@ -1306,7 +1305,6 @@  static void unlink_empty_async_suspended(struct ehci_hcd *ehci)
 	}
 	start_iaa_cycle(ehci);
 }
-#endif
 
 /* makes sure the async qh will become idle */
 /* caller must own ehci->lock */