]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
s390: zcrypt: initialize variables before_use
authorArnd Bergmann <arnd@arndb.de>
Mon, 8 Apr 2019 21:26:18 +0000 (23:26 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 31 May 2019 13:45:07 +0000 (06:45 -0700)
[ Upstream commit 913140e221567b3ecd21b4242257a7e3fa279026 ]

The 'func_code' variable gets printed in debug statements without
a prior initialization in multiple functions, as reported when building
with clang:

drivers/s390/crypto/zcrypt_api.c:659:6: warning: variable 'func_code' is used uninitialized whenever 'if' condition is true
      [-Wsometimes-uninitialized]
        if (mex->outputdatalength < mex->inputdatalength) {
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/s390/crypto/zcrypt_api.c:725:29: note: uninitialized use occurs here
        trace_s390_zcrypt_rep(mex, func_code, rc,
                                   ^~~~~~~~~
drivers/s390/crypto/zcrypt_api.c:659:2: note: remove the 'if' if its condition is always false
        if (mex->outputdatalength < mex->inputdatalength) {
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/s390/crypto/zcrypt_api.c:654:24: note: initialize the variable 'func_code' to silence this warning
        unsigned int func_code;
                              ^

Add initializations to all affected code paths to shut up the warning
and make the warning output consistent.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/s390/crypto/zcrypt_api.c

index eb93c2d27d0ad142c4d977d74df3e415468336af..df1e847dd36e7602b7c74ac25bcc04d67376bcda 100644 (file)
@@ -657,6 +657,7 @@ static long zcrypt_rsa_modexpo(struct ap_perms *perms,
        trace_s390_zcrypt_req(mex, TP_ICARSAMODEXPO);
 
        if (mex->outputdatalength < mex->inputdatalength) {
+               func_code = 0;
                rc = -EINVAL;
                goto out;
        }
@@ -739,6 +740,7 @@ static long zcrypt_rsa_crt(struct ap_perms *perms,
        trace_s390_zcrypt_req(crt, TP_ICARSACRT);
 
        if (crt->outputdatalength < crt->inputdatalength) {
+               func_code = 0;
                rc = -EINVAL;
                goto out;
        }
@@ -946,6 +948,7 @@ static long zcrypt_send_ep11_cprb(struct ap_perms *perms,
 
                targets = kcalloc(target_num, sizeof(*targets), GFP_KERNEL);
                if (!targets) {
+                       func_code = 0;
                        rc = -ENOMEM;
                        goto out;
                }
@@ -953,6 +956,7 @@ static long zcrypt_send_ep11_cprb(struct ap_perms *perms,
                uptr = (struct ep11_target_dev __force __user *) xcrb->targets;
                if (copy_from_user(targets, uptr,
                                   target_num * sizeof(*targets))) {
+                       func_code = 0;
                        rc = -EFAULT;
                        goto out_free;
                }