All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [hare-scsi-devel:tls-upcall.v4 121/156] net/tls/af_tlsh.c:640:6: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
Date: Mon, 14 Mar 2022 11:10:41 +0800	[thread overview]
Message-ID: <202203141106.9fgCAlQD-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 27530 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Chuck Lever <chuck.lever@oracle.com>
CC: Hannes Reinecke <hare@suse.de>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel.git tls-upcall.v4
head:   d2416ecdb6b03fc2e4aa40b20cdf919322713224
commit: 33ec82590b0b919215a255fb431d661be4807b45 [121/156] net/tls: Add support for PF_TLSH (a TLS handshake listener)
:::::: branch date: 4 days ago
:::::: commit date: 6 days ago
config: arm-randconfig-c002-20220313 (https://download.01.org/0day-ci/archive/20220314/202203141106.9fgCAlQD-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0467eb2cb7654c15ae366967ef35093c5724c416)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel.git/commit/?id=33ec82590b0b919215a255fb431d661be4807b45
        git remote add hare-scsi-devel https://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel.git
        git fetch --no-tags hare-scsi-devel tls-upcall.v4
        git checkout 33ec82590b0b919215a255fb431d661be4807b45
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
   drivers/mmc/host/atmel-mci.c:1253:6: note: Left side of '||' is false
   drivers/mmc/host/atmel-mci.c:1253:26: note: Assuming field 'need_reset_after_xfer' is false
           if (host->need_reset || host->caps.need_reset_after_xfer) {
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mmc/host/atmel-mci.c:1253:2: note: Taking false branch
           if (host->need_reset || host->caps.need_reset_after_xfer) {
           ^
   drivers/mmc/host/atmel-mci.c:1267:6: note: Assuming the condition is false
           if (iflags & ~(ATMCI_SDIOIRQA | ATMCI_SDIOIRQB))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mmc/host/atmel-mci.c:1267:2: note: Taking false branch
           if (iflags & ~(ATMCI_SDIOIRQA | ATMCI_SDIOIRQB))
           ^
   drivers/mmc/host/atmel-mci.c:1271:15: note: '?' condition is true
           if (unlikely(test_and_clear_bit(ATMCI_CARD_NEED_INIT, &slot->flags))) {
                        ^
   arch/arm/include/asm/bitops.h:193:34: note: expanded from macro 'test_and_clear_bit'
   #define test_and_clear_bit(nr,p)        ATOMIC_BITOP(test_and_clear_bit,nr,p)
                                           ^
   arch/arm/include/asm/bitops.h:181:3: note: expanded from macro 'ATOMIC_BITOP'
           (__builtin_constant_p(nr) ? ____atomic_##name(nr, p) : _##name(nr,p))
            ^
   drivers/mmc/host/atmel-mci.c:1271:6: note: Assuming the condition is true
           if (unlikely(test_and_clear_bit(ATMCI_CARD_NEED_INIT, &slot->flags))) {
               ^
   include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                             ^~~~
   drivers/mmc/host/atmel-mci.c:1271:2: note: Taking false branch
           if (unlikely(test_and_clear_bit(ATMCI_CARD_NEED_INIT, &slot->flags))) {
           ^
   drivers/mmc/host/atmel-mci.c:1278:2: note: Value assigned to 'data'
           data = mrq->data;
           ^~~~~~~~~~~~~~~~
   drivers/mmc/host/atmel-mci.c:1279:6: note: Assuming 'data' is null
           if (data) {
               ^~~~
   drivers/mmc/host/atmel-mci.c:1279:2: note: Taking false branch
           if (data) {
           ^
   drivers/mmc/host/atmel-mci.c:1301:6: note: Assuming the condition is false
           if (host->submit_data != &atmci_submit_data_dma)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mmc/host/atmel-mci.c:1301:2: note: Taking false branch
           if (host->submit_data != &atmci_submit_data_dma)
           ^
   drivers/mmc/host/atmel-mci.c:1304:6: note: 'data' is null
           if (data)
               ^~~~
   drivers/mmc/host/atmel-mci.c:1304:2: note: Taking false branch
           if (data)
           ^
   drivers/mmc/host/atmel-mci.c:1307:6: note: Assuming the condition is false
           if (host->submit_data == &atmci_submit_data_dma)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mmc/host/atmel-mci.c:1307:2: note: Taking false branch
           if (host->submit_data == &atmci_submit_data_dma)
           ^
   drivers/mmc/host/atmel-mci.c:1310:6: note: Assuming field 'stop' is non-null
           if (mrq->stop) {
               ^~~~~~~~~
   drivers/mmc/host/atmel-mci.c:1310:2: note: Taking true branch
           if (mrq->stop) {
           ^
   drivers/mmc/host/atmel-mci.c:1313:9: note: Access to field 'flags' results in a dereference of a null pointer (loaded from variable 'data')
                   if (!(data->flags & MMC_DATA_WRITE))
                         ^~~~
   drivers/mmc/host/atmel-mci.c:1727:23: warning: Value stored to 'state' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           enum atmel_mci_state    state = host->state;
                                   ^~~~~   ~~~~~~~~~~~
   drivers/mmc/host/atmel-mci.c:1727:23: note: Value stored to 'state' during its initialization is never read
           enum atmel_mci_state    state = host->state;
                                   ^~~~~   ~~~~~~~~~~~
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   8 warnings generated.
>> net/tls/af_tlsh.c:640:6: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
           if (put_user(outlen, optlen)) {
               ^
   arch/arm/include/asm/uaccess.h:369:2: note: expanded from macro 'put_user'
           __put_user_switch((x), (ptr), __pu_err, __put_user_check);      \
           ^
   arch/arm/include/asm/uaccess.h:352:3: note: expanded from macro '__put_user_switch'
                   __typeof__(*(ptr)) __pu_val = (x);                      \
                   ^
   net/tls/af_tlsh.c:701:2: note: Control jumps to 'case 2:'  at line 702
           switch (sk->sk_family) {
           ^
   net/tls/af_tlsh.c:703:3: note:  Execution continues on line 712
                   break;
                   ^
   net/tls/af_tlsh.c:712:6: note: Assuming 'level' is equal to SOL_TLSH
           if (level != SOL_TLSH)
               ^~~~~~~~~~~~~~~~~
   net/tls/af_tlsh.c:712:2: note: Taking false branch
           if (level != SOL_TLSH)
           ^
   net/tls/af_tlsh.c:715:2: note: Control jumps to 'case 1:'  at line 716
           switch (optname) {
           ^
   net/tls/af_tlsh.c:717:9: note: Calling 'tlsh_getsockopt_priorities'
                   ret = tlsh_getsockopt_priorities(sk, optval, optlen);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/tls/af_tlsh.c:605:6: note: 'outlen' declared without an initial value
           int outlen, len, ret;
               ^~~~~~
   net/tls/af_tlsh.c:608:6: note: Control jumps to 'case 4:'  at line 608
           if (get_user(len, optlen))
               ^
   arch/arm/include/asm/uaccess.h:216:3: note: expanded from macro 'get_user'
                   __get_user_check(x, p);                                 \
                   ^
   arch/arm/include/asm/uaccess.h:180:3: note: expanded from macro '__get_user_check'
                   switch (sizeof(*(__p))) {                               \
                   ^
   net/tls/af_tlsh.c:608:6: note: Taking false branch
           if (get_user(len, optlen))
               ^
   arch/arm/include/asm/uaccess.h:216:3: note: expanded from macro 'get_user'
                   __get_user_check(x, p);                                 \
                   ^
   arch/arm/include/asm/uaccess.h:194:4: note: expanded from macro '__get_user_check'
                           if (sizeof((x)) >= 8)                           \
                           ^
   net/tls/af_tlsh.c:608:6: note:  Execution continues on line 608
           if (get_user(len, optlen))
               ^
   arch/arm/include/asm/uaccess.h:216:3: note: expanded from macro 'get_user'
                   __get_user_check(x, p);                                 \
                   ^
   arch/arm/include/asm/uaccess.h:198:4: note: expanded from macro '__get_user_check'
                           break;                                          \
                           ^
   net/tls/af_tlsh.c:608:6: note: Assuming the condition is false
           if (get_user(len, optlen))
               ^
   arch/arm/include/asm/uaccess.h:214:2: note: expanded from macro 'get_user'
           ({                                                              \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/tls/af_tlsh.c:608:2: note: Taking false branch
           if (get_user(len, optlen))
           ^
   net/tls/af_tlsh.c:610:6: note: Assuming 'optval' is non-null
           if (!optval)
               ^~~~~~~
   net/tls/af_tlsh.c:610:2: note: Taking false branch
           if (!optval)
           ^
   net/tls/af_tlsh.c:619:6: note: Assuming 'info' is non-null
           if (info) {
               ^~~~
   net/tls/af_tlsh.c:619:2: note: Taking true branch
           if (info) {
           ^
   net/tls/af_tlsh.c:629:6: note: Assuming 'val' is non-null
           if (val) {
               ^~~
   net/tls/af_tlsh.c:629:2: note: Taking true branch
           if (val) {
           ^
   net/tls/af_tlsh.c:632:7: note: Assuming 'len' is >= 'outlen'
                   if (len < outlen) {
                       ^~~~~~~~~~~~
   net/tls/af_tlsh.c:632:3: note: Taking false branch
                   if (len < outlen) {
                   ^
   net/tls/af_tlsh.c:640:6: note: Assigned value is garbage or undefined
           if (put_user(outlen, optlen)) {
               ^
   arch/arm/include/asm/uaccess.h:369:2: note: expanded from macro 'put_user'
           __put_user_switch((x), (ptr), __pu_err, __put_user_check);      \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm/include/asm/uaccess.h:352:3: note: expanded from macro '__put_user_switch'
                   __typeof__(*(ptr)) __pu_val = (x);                      \
                   ^                             ~~~
   Suppressed 7 warnings (5 in non-user code, 2 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
--
               ^~~~
   net/ceph/messenger_v2.c:2548:2: note: Taking false branch
           if (skip)
           ^
   net/ceph/messenger_v2.c:2552:10: note: Access to field 'con' results in a dereference of a null pointer (loaded from field 'in_msg')
           WARN_ON(con->in_msg->con != con);
                   ^
   include/asm-generic/bug.h:166:25: note: expanded from macro 'WARN_ON'
           int __ret_warn_on = !!(condition);                              \
                                  ^~~~~~~~~
   Suppressed 7 warnings (6 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   7 warnings generated.
   fs/splice.c:725:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
           return ret;
           ^      ~~~
   fs/splice.c:630:2: note: 'ret' declared without an initial value
           ssize_t ret;
           ^~~~~~~~~~~
   fs/splice.c:632:15: note: Assuming 'array' is non-null
           if (unlikely(!array))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   fs/splice.c:632:2: note: Taking false branch
           if (unlikely(!array))
           ^
   fs/splice.c:638:2: note: Loop condition is false. Execution continues on line 717
           while (sd.total_len) {
           ^
   fs/splice.c:722:9: note: Field 'num_spliced' is 0
           if (sd.num_spliced)
                  ^
   fs/splice.c:722:2: note: Taking false branch
           if (sd.num_spliced)
           ^
   fs/splice.c:725:2: note: Undefined or garbage value returned to caller
           return ret;
           ^      ~~~
   fs/splice.c:853:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
           ret = 0;
           ^     ~
   fs/splice.c:853:2: note: Value stored to 'ret' is never read
           ret = 0;
           ^     ~
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   8 warnings generated.
   net/rxrpc/local_object.c:218:3: warning: Value stored to 'age' is never read [clang-analyzer-deadcode.DeadStores]
                   age = "old";
                   ^     ~~~~~
   net/rxrpc/local_object.c:218:3: note: Value stored to 'age' is never read
                   age = "old";
                   ^     ~~~~~
   net/rxrpc/local_object.c:234:2: warning: Value stored to 'age' is never read [clang-analyzer-deadcode.DeadStores]
           age = "new";
           ^     ~~~~~
   net/rxrpc/local_object.c:234:2: note: Value stored to 'age' is never read
           age = "new";
           ^     ~~~~~
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   8 warnings generated.
>> net/tls/af_tlsh.c:640:6: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
           if (put_user(outlen, optlen)) {
               ^
   arch/arm/include/asm/uaccess.h:369:2: note: expanded from macro 'put_user'
           __put_user_switch((x), (ptr), __pu_err, __put_user_check);      \
           ^
   arch/arm/include/asm/uaccess.h:352:3: note: expanded from macro '__put_user_switch'
                   __typeof__(*(ptr)) __pu_val = (x);                      \
                   ^
   net/tls/af_tlsh.c:701:2: note: Control jumps to 'case 2:'  at line 702
           switch (sk->sk_family) {
           ^
   net/tls/af_tlsh.c:703:3: note:  Execution continues on line 712
                   break;
                   ^
   net/tls/af_tlsh.c:712:6: note: Assuming 'level' is equal to SOL_TLSH
           if (level != SOL_TLSH)
               ^~~~~~~~~~~~~~~~~
   net/tls/af_tlsh.c:712:2: note: Taking false branch
           if (level != SOL_TLSH)
           ^
   net/tls/af_tlsh.c:715:2: note: Control jumps to 'case 1:'  at line 716
           switch (optname) {
           ^
   net/tls/af_tlsh.c:717:9: note: Calling 'tlsh_getsockopt_priorities'
                   ret = tlsh_getsockopt_priorities(sk, optval, optlen);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/tls/af_tlsh.c:605:6: note: 'outlen' declared without an initial value
           int outlen, len, ret;
               ^~~~~~
   net/tls/af_tlsh.c:608:6: note: Control jumps to 'case 4:'  at line 608
           if (get_user(len, optlen))
               ^
   arch/arm/include/asm/uaccess.h:216:3: note: expanded from macro 'get_user'
                   __get_user_check(x, p);                                 \
                   ^
   arch/arm/include/asm/uaccess.h:180:3: note: expanded from macro '__get_user_check'
                   switch (sizeof(*(__p))) {                               \
                   ^
   net/tls/af_tlsh.c:608:6: note: Taking false branch
           if (get_user(len, optlen))
               ^
   arch/arm/include/asm/uaccess.h:216:3: note: expanded from macro 'get_user'
                   __get_user_check(x, p);                                 \
                   ^
   arch/arm/include/asm/uaccess.h:194:4: note: expanded from macro '__get_user_check'
                           if (sizeof((x)) >= 8)                           \
                           ^
   net/tls/af_tlsh.c:608:6: note:  Execution continues on line 608
           if (get_user(len, optlen))
               ^
   arch/arm/include/asm/uaccess.h:216:3: note: expanded from macro 'get_user'
                   __get_user_check(x, p);                                 \
                   ^
   arch/arm/include/asm/uaccess.h:198:4: note: expanded from macro '__get_user_check'
                           break;                                          \
                           ^
   net/tls/af_tlsh.c:608:6: note: Assuming the condition is false
           if (get_user(len, optlen))
               ^
   arch/arm/include/asm/uaccess.h:214:2: note: expanded from macro 'get_user'
           ({                                                              \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/tls/af_tlsh.c:608:2: note: Taking false branch
           if (get_user(len, optlen))
           ^
   net/tls/af_tlsh.c:610:6: note: Assuming 'optval' is non-null
           if (!optval)
               ^~~~~~~
   net/tls/af_tlsh.c:610:2: note: Taking false branch
           if (!optval)
           ^
   net/tls/af_tlsh.c:619:6: note: Assuming 'info' is non-null
           if (info) {
               ^~~~
   net/tls/af_tlsh.c:619:2: note: Taking true branch
           if (info) {
           ^
   net/tls/af_tlsh.c:629:6: note: Assuming 'val' is non-null
           if (val) {
               ^~~
   net/tls/af_tlsh.c:629:2: note: Taking true branch
           if (val) {
           ^
   net/tls/af_tlsh.c:632:7: note: Assuming 'len' is >= 'outlen'
                   if (len < outlen) {
                       ^~~~~~~~~~~~
   net/tls/af_tlsh.c:632:3: note: Taking false branch
                   if (len < outlen) {
                   ^
   net/tls/af_tlsh.c:640:6: note: Assigned value is garbage or undefined
           if (put_user(outlen, optlen)) {
               ^
   arch/arm/include/asm/uaccess.h:369:2: note: expanded from macro 'put_user'
           __put_user_switch((x), (ptr), __pu_err, __put_user_check);      \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm/include/asm/uaccess.h:352:3: note: expanded from macro '__put_user_switch'
                   __typeof__(*(ptr)) __pu_val = (x);                      \
                   ^                             ~~~
   Suppressed 7 warnings (5 in non-user code, 2 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.

vim +640 net/tls/af_tlsh.c

33ec82590b0b91 Chuck Lever 2021-11-19  600  
33ec82590b0b91 Chuck Lever 2021-11-19  601  static int tlsh_getsockopt_priorities(struct sock *sk, char __user *optval,
33ec82590b0b91 Chuck Lever 2021-11-19  602  				      int __user *optlen)
33ec82590b0b91 Chuck Lever 2021-11-19  603  {
33ec82590b0b91 Chuck Lever 2021-11-19  604  	struct tlsh_sock_info *info;
33ec82590b0b91 Chuck Lever 2021-11-19  605  	int outlen, len, ret;
33ec82590b0b91 Chuck Lever 2021-11-19  606  	const char *val;
33ec82590b0b91 Chuck Lever 2021-11-19  607  
33ec82590b0b91 Chuck Lever 2021-11-19  608  	if (get_user(len, optlen))
33ec82590b0b91 Chuck Lever 2021-11-19  609  		return -EFAULT;
33ec82590b0b91 Chuck Lever 2021-11-19  610  	if (!optval)
33ec82590b0b91 Chuck Lever 2021-11-19  611  		return -EINVAL;
33ec82590b0b91 Chuck Lever 2021-11-19  612  
33ec82590b0b91 Chuck Lever 2021-11-19  613  	ret = 0;
33ec82590b0b91 Chuck Lever 2021-11-19  614  
33ec82590b0b91 Chuck Lever 2021-11-19  615  	sock_hold(sk);
33ec82590b0b91 Chuck Lever 2021-11-19  616  	write_lock_bh(&sk->sk_callback_lock);
33ec82590b0b91 Chuck Lever 2021-11-19  617  
33ec82590b0b91 Chuck Lever 2021-11-19  618  	info = sk->sk_tlsh_priv;
33ec82590b0b91 Chuck Lever 2021-11-19  619  	if (info) {
33ec82590b0b91 Chuck Lever 2021-11-19  620  		val = info->tsi_tls_priorities;
33ec82590b0b91 Chuck Lever 2021-11-19  621  	} else {
33ec82590b0b91 Chuck Lever 2021-11-19  622  		write_unlock_bh(&sk->sk_callback_lock);
33ec82590b0b91 Chuck Lever 2021-11-19  623  		ret = -EBUSY;
33ec82590b0b91 Chuck Lever 2021-11-19  624  		goto out_put;
33ec82590b0b91 Chuck Lever 2021-11-19  625  	}
33ec82590b0b91 Chuck Lever 2021-11-19  626  
33ec82590b0b91 Chuck Lever 2021-11-19  627  	write_unlock_bh(&sk->sk_callback_lock);
33ec82590b0b91 Chuck Lever 2021-11-19  628  
33ec82590b0b91 Chuck Lever 2021-11-19  629  	if (val) {
33ec82590b0b91 Chuck Lever 2021-11-19  630  		int outlen = strlen(val);
33ec82590b0b91 Chuck Lever 2021-11-19  631  
33ec82590b0b91 Chuck Lever 2021-11-19  632  		if (len < outlen) {
33ec82590b0b91 Chuck Lever 2021-11-19  633  			ret = -EINVAL;
33ec82590b0b91 Chuck Lever 2021-11-19  634  			goto out_put;
33ec82590b0b91 Chuck Lever 2021-11-19  635  		}
33ec82590b0b91 Chuck Lever 2021-11-19  636  	} else {
33ec82590b0b91 Chuck Lever 2021-11-19  637  		outlen = 0;
33ec82590b0b91 Chuck Lever 2021-11-19  638  	}
33ec82590b0b91 Chuck Lever 2021-11-19  639  
33ec82590b0b91 Chuck Lever 2021-11-19 @640  	if (put_user(outlen, optlen)) {
33ec82590b0b91 Chuck Lever 2021-11-19  641  		ret = -EFAULT;
33ec82590b0b91 Chuck Lever 2021-11-19  642  		goto out_put;
33ec82590b0b91 Chuck Lever 2021-11-19  643  	}
33ec82590b0b91 Chuck Lever 2021-11-19  644  	if (copy_to_user(optval, &val, outlen))
33ec82590b0b91 Chuck Lever 2021-11-19  645  		ret = -EFAULT;
33ec82590b0b91 Chuck Lever 2021-11-19  646  
33ec82590b0b91 Chuck Lever 2021-11-19  647  out_put:
33ec82590b0b91 Chuck Lever 2021-11-19  648  	sock_put(sk);
33ec82590b0b91 Chuck Lever 2021-11-19  649  	return ret;
33ec82590b0b91 Chuck Lever 2021-11-19  650  }
33ec82590b0b91 Chuck Lever 2021-11-19  651  

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

                 reply	other threads:[~2022-03-14  3:10 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202203141106.9fgCAlQD-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.