aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/auth_gss
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert@linux-m68k.org>2013-05-06 03:21:03 -0400
committerJ. Bruce Fields <bfields@redhat.com>2013-05-06 08:54:06 -0400
commit9fd40c5a66be0b0a5d65362ec139968ba6d1f412 (patch)
tree60a6aef3e99075dd1215e349f4115424708bc82f /net/sunrpc/auth_gss
parent9f415eb25574db4b73a9a712a4438e41dc284922 (diff)
SUNRPC: Refactor gssx_dec_option_array() to kill uninitialized warning
net/sunrpc/auth_gss/gss_rpc_xdr.c: In function ‘gssx_dec_option_array’: net/sunrpc/auth_gss/gss_rpc_xdr.c:258: warning: ‘creds’ may be used uninitialized in this function Return early if count is zero, to make it clearer to the compiler (and the casual reviewer) that no more processing is done. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'net/sunrpc/auth_gss')
-rw-r--r--net/sunrpc/auth_gss/gss_rpc_xdr.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/net/sunrpc/auth_gss/gss_rpc_xdr.c b/net/sunrpc/auth_gss/gss_rpc_xdr.c
index 5c4c61d527e2..a1e1b1ab515b 100644
--- a/net/sunrpc/auth_gss/gss_rpc_xdr.c
+++ b/net/sunrpc/auth_gss/gss_rpc_xdr.c
@@ -264,25 +264,27 @@ static int gssx_dec_option_array(struct xdr_stream *xdr,
264 if (unlikely(p == NULL)) 264 if (unlikely(p == NULL))
265 return -ENOSPC; 265 return -ENOSPC;
266 count = be32_to_cpup(p++); 266 count = be32_to_cpup(p++);
267 if (count != 0) { 267 if (!count)
268 /* we recognize only 1 currently: CREDS_VALUE */ 268 return 0;
269 oa->count = 1;
270 269
271 oa->data = kmalloc(sizeof(struct gssx_option), GFP_KERNEL); 270 /* we recognize only 1 currently: CREDS_VALUE */
272 if (!oa->data) 271 oa->count = 1;
273 return -ENOMEM;
274 272
275 creds = kmalloc(sizeof(struct svc_cred), GFP_KERNEL); 273 oa->data = kmalloc(sizeof(struct gssx_option), GFP_KERNEL);
276 if (!creds) { 274 if (!oa->data)
277 kfree(oa->data); 275 return -ENOMEM;
278 return -ENOMEM;
279 }
280 276
281 oa->data[0].option.data = CREDS_VALUE; 277 creds = kmalloc(sizeof(struct svc_cred), GFP_KERNEL);
282 oa->data[0].option.len = sizeof(CREDS_VALUE); 278 if (!creds) {
283 oa->data[0].value.data = (void *)creds; 279 kfree(oa->data);
284 oa->data[0].value.len = 0; 280 return -ENOMEM;
285 } 281 }
282
283 oa->data[0].option.data = CREDS_VALUE;
284 oa->data[0].option.len = sizeof(CREDS_VALUE);
285 oa->data[0].value.data = (void *)creds;
286 oa->data[0].value.len = 0;
287
286 for (i = 0; i < count; i++) { 288 for (i = 0; i < count; i++) {
287 gssx_buffer dummy = { 0, NULL }; 289 gssx_buffer dummy = { 0, NULL };
288 u32 length; 290 u32 length;