| From 2125fdb2a8e9f19a578c0d68b912b9fa57db7d19 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 24 May 2019 09:15:17 -0700 |
| Subject: misc: sgi-xp: Properly initialize buf in xpc_get_rsvd_page_pa |
| |
| From: Nathan Chancellor <natechancellor@gmail.com> |
| |
| [ Upstream commit b0576f9ecb5c51e9932531d23c447b2739261841 ] |
| |
| Clang warns: |
| |
| drivers/misc/sgi-xp/xpc_partition.c:73:14: warning: variable 'buf' is |
| uninitialized when used within its own initialization [-Wuninitialized] |
| void *buf = buf; |
| ~~~ ^~~ |
| 1 warning generated. |
| |
| Arnd's explanation during review: |
| |
| /* |
| * Returns the physical address of the partition's reserved page through |
| * an iterative number of calls. |
| * |
| * On first call, 'cookie' and 'len' should be set to 0, and 'addr' |
| * set to the nasid of the partition whose reserved page's address is |
| * being sought. |
| * On subsequent calls, pass the values, that were passed back on the |
| * previous call. |
| * |
| * While the return status equals SALRET_MORE_PASSES, keep calling |
| * this function after first copying 'len' bytes starting at 'addr' |
| * into 'buf'. Once the return status equals SALRET_OK, 'addr' will |
| * be the physical address of the partition's reserved page. If the |
| * return status equals neither of these, an error as occurred. |
| */ |
| static inline s64 |
| sn_partition_reserved_page_pa(u64 buf, u64 *cookie, u64 *addr, u64 *len) |
| |
| so *len is set to zero on the first call and tells the bios how many |
| bytes are accessible at 'buf', and it does get updated by the BIOS to |
| tell us how many bytes it needs, and then we allocate that and try again. |
| |
| Fixes: 279290294662 ("[IA64-SGI] cleanup the way XPC locates the reserved page") |
| Link: https://github.com/ClangBuiltLinux/linux/issues/466 |
| Suggested-by: Stephen Hines <srhines@google.com> |
| Reviewed-by: Arnd Bergmann <arnd@arndb.de> |
| Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> |
| Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/misc/sgi-xp/xpc_partition.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/misc/sgi-xp/xpc_partition.c b/drivers/misc/sgi-xp/xpc_partition.c |
| index 6956f7e7d4392..ca5f0102daef4 100644 |
| --- a/drivers/misc/sgi-xp/xpc_partition.c |
| +++ b/drivers/misc/sgi-xp/xpc_partition.c |
| @@ -70,7 +70,7 @@ xpc_get_rsvd_page_pa(int nasid) |
| unsigned long rp_pa = nasid; /* seed with nasid */ |
| size_t len = 0; |
| size_t buf_len = 0; |
| - void *buf = buf; |
| + void *buf = NULL; |
| void *buf_base = NULL; |
| enum xp_retval (*get_partition_rsvd_page_pa) |
| (void *, u64 *, unsigned long *, size_t *) = |
| -- |
| 2.20.1 |
| |