x86: hibernate: fix swsusp_arch_resume() prototype
authorArnd Bergmann <arnd@arndb.de>
Fri, 2 Feb 2018 14:56:18 +0000 (15:56 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 7 Feb 2018 11:18:23 +0000 (12:18 +0100)
The declaration for swsusp_arch_resume() marks it as 'asmlinkage',
but the definition in x86-32 does not, and it fails to include
the header with the declaration.  This leads to a warning when
building with link-time-optimizations:

kernel/power/power.h:108:23: error: type of 'swsusp_arch_resume' does not match original declaration [-Werror=lto-type-mismatch]
 extern asmlinkage int swsusp_arch_resume(void);
                       ^
arch/x86/power/hibernate_32.c:148:0: note: 'swsusp_arch_resume' was previously declared here
 int swsusp_arch_resume(void)

This moves the declaration into a globally visible header file
and fixes up both x86 definitions to match it.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
arch/x86/power/hibernate_32.c
arch/x86/power/hibernate_64.c
include/linux/suspend.h
kernel/power/power.h

index c35fdb585c6853a1f281b043d54ca3b59c801d06..afc4ed7b1578267c0f87a858aea0de5494829ec1 100644 (file)
@@ -145,7 +145,7 @@ static inline void resume_init_first_level_page_table(pgd_t *pg_dir)
 #endif
 }
 
-int swsusp_arch_resume(void)
+asmlinkage int swsusp_arch_resume(void)
 {
        int error;
 
index f910c514438f168a5f09afbd312311498abe2c50..0ef5e520496891eefe9e30269d6dd779027223fd 100644 (file)
@@ -174,7 +174,7 @@ out:
        return 0;
 }
 
-int swsusp_arch_resume(void)
+asmlinkage int swsusp_arch_resume(void)
 {
        int error;
 
index cc22a24516d699582a639329a99df51eb5bb2fb4..440b62f7502ebe4cc2cc5161f511cc427a30e3d5 100644 (file)
@@ -384,6 +384,8 @@ extern int swsusp_page_is_forbidden(struct page *);
 extern void swsusp_set_page_free(struct page *);
 extern void swsusp_unset_page_free(struct page *);
 extern unsigned long get_safe_page(gfp_t gfp_mask);
+extern asmlinkage int swsusp_arch_suspend(void);
+extern asmlinkage int swsusp_arch_resume(void);
 
 extern void hibernation_set_ops(const struct platform_hibernation_ops *ops);
 extern int hibernate(void);
index f29cd178df90a1fbf20586702060e8a3c60a8bd9..9e58bdc8a562b935450364776b15077f60d420c3 100644 (file)
@@ -104,9 +104,6 @@ extern int in_suspend;
 extern dev_t swsusp_resume_device;
 extern sector_t swsusp_resume_block;
 
-extern asmlinkage int swsusp_arch_suspend(void);
-extern asmlinkage int swsusp_arch_resume(void);
-
 extern int create_basic_memory_bitmaps(void);
 extern void free_basic_memory_bitmaps(void);
 extern int hibernate_preallocate_memory(void);