Message ID | 20210201150306.54099-2-pasha.tatashin@soleen.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64/hibernate: sparse warnings fix | expand |
On Mon, Feb 01, 2021 at 10:03:06AM -0500, Pavel Tatashin wrote: > Two new warnings are reported by sparse: > > "sparse warnings: (new ones prefixed by >>)" > >> arch/arm64/kernel/hibernate.c:181:39: sparse: sparse: cast to > restricted gfp_t > >> arch/arm64/kernel/hibernate.c:202:44: sparse: sparse: cast from > restricted gfp_t > > gfp_t has __bitwise type attribute and requires __force added to casting > in order to avoid these warnings. > > Fixes: 50f53fb72181 ("arm64: trans_pgd: make trans_pgd_map_page generic") > Reported-by: kernel test robot <lkp@intel.com> > Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com> What about just passing the gfp_t value by reference which would be much cleaner?
On Tue, Feb 2, 2021 at 3:42 AM Christoph Hellwig <hch@infradead.org> wrote: > > On Mon, Feb 01, 2021 at 10:03:06AM -0500, Pavel Tatashin wrote: > > Two new warnings are reported by sparse: > > > > "sparse warnings: (new ones prefixed by >>)" > > >> arch/arm64/kernel/hibernate.c:181:39: sparse: sparse: cast to > > restricted gfp_t > > >> arch/arm64/kernel/hibernate.c:202:44: sparse: sparse: cast from > > restricted gfp_t > > > > gfp_t has __bitwise type attribute and requires __force added to casting > > in order to avoid these warnings. > > > > Fixes: 50f53fb72181 ("arm64: trans_pgd: make trans_pgd_map_page generic") > > Reported-by: kernel test robot <lkp@intel.com> > > Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com> > > What about just passing the gfp_t value by reference which would be much > cleaner? Hi Christoph, Thank you for your suggestions. Passing by reference is OK. I am not sure it would be much cleaner because for GFP_ATOMIC we would need to declare another variable on stack before trans_info. Pasha
diff --git a/arch/arm64/kernel/hibernate.c b/arch/arm64/kernel/hibernate.c index 9df32ba0d574..b1cef371df2b 100644 --- a/arch/arm64/kernel/hibernate.c +++ b/arch/arm64/kernel/hibernate.c @@ -178,7 +178,7 @@ EXPORT_SYMBOL(arch_hibernation_header_restore); static void *hibernate_page_alloc(void *arg) { - return (void *)get_safe_page((gfp_t)(unsigned long)arg); + return (void *)get_safe_page((__force gfp_t)(unsigned long)arg); } /* @@ -198,7 +198,7 @@ static int create_safe_exec_page(void *src_start, size_t length, { struct trans_pgd_info trans_info = { .trans_alloc_page = hibernate_page_alloc, - .trans_alloc_arg = (void *)GFP_ATOMIC, + .trans_alloc_arg = (__force void *)GFP_ATOMIC, }; void *page = (void *)get_safe_page(GFP_ATOMIC);