All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [cel:topic-rpc-with-tls 9995/9999] net/tls/ttls.c:2148:9: error: too few arguments to function 'kernel_fpu_begin'
Date: Sat, 22 Jan 2022 22:14:19 +0800	[thread overview]
Message-ID: <202201222234.oGj9OPe6-lkp@intel.com> (raw)

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

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux topic-rpc-with-tls
head:   a72d5318846d67a7f3f5f2bcb4c0c09c4f8907d1
commit: 88772cc15e58e3bb69ab319d7fb2ed0cdce5a5a1 [9995/9999] Introduce CONFIG_TLS_SOFTIRQ to perform all TLS routines in softirq (fixes #1446).
config: s390-allyesconfig (https://download.01.org/0day-ci/archive/20220122/202201222234.oGj9OPe6-lkp(a)intel.com/config)
compiler: s390-linux-gcc (GCC) 11.2.0
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
        # https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git/commit/?id=88772cc15e58e3bb69ab319d7fb2ed0cdce5a5a1
        git remote add cel git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
        git fetch --no-tags cel topic-rpc-with-tls
        git checkout 88772cc15e58e3bb69ab319d7fb2ed0cdce5a5a1
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=s390 SHELL=/bin/bash

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

All errors (new ones prefixed by >>):

   In file included from net/tls/ttls.c:28:
   arch/s390/include/asm/fpu/api.h: In function 'kernel_fpu_begin':
   arch/s390/include/asm/fpu/api.h:97:14: error: invalid use of undefined type 'struct kernel_fpu'
      97 |         state->mask = S390_lowcore.fpu_flags;
         |              ^~
   arch/s390/include/asm/fpu/api.h:98:14: error: implicit declaration of function 'test_cpu_flag' [-Werror=implicit-function-declaration]
      98 |         if (!test_cpu_flag(CIF_FPU))
         |              ^~~~~~~~~~~~~
   arch/s390/include/asm/fpu/api.h:98:28: error: 'CIF_FPU' undeclared (first use in this function)
      98 |         if (!test_cpu_flag(CIF_FPU))
         |                            ^~~~~~~
   arch/s390/include/asm/fpu/api.h:98:28: note: each undeclared identifier is reported only once for each function it appears in
   arch/s390/include/asm/fpu/api.h:101:23: error: invalid use of undefined type 'struct kernel_fpu'
     101 |         else if (state->mask & flags)
         |                       ^~
   arch/s390/include/asm/fpu/api.h: In function 'kernel_fpu_end':
   arch/s390/include/asm/fpu/api.h:109:39: error: invalid use of undefined type 'struct kernel_fpu'
     109 |         S390_lowcore.fpu_flags = state->mask;
         |                                       ^~
   arch/s390/include/asm/fpu/api.h:110:18: error: invalid use of undefined type 'struct kernel_fpu'
     110 |         if (state->mask & flags)
         |                  ^~
   In file included from arch/s390/include/asm/smp.h:13,
                    from include/linux/smp.h:85,
                    from include/linux/lockdep.h:14,
                    from include/linux/spinlock.h:59,
                    from include/linux/mmzone.h:8,
                    from include/linux/gfp.h:6,
                    from include/linux/slab.h:15,
                    from include/linux/crypto.h:20,
                    from include/crypto/aead.h:11,
                    from net/tls/ttls.c:29:
   arch/s390/include/asm/processor.h: At top level:
   arch/s390/include/asm/processor.h:58:19: error: static declaration of 'test_cpu_flag' follows non-static declaration
      58 | static inline int test_cpu_flag(int flag)
         |                   ^~~~~~~~~~~~~
   In file included from net/tls/ttls.c:28:
   arch/s390/include/asm/fpu/api.h:98:14: note: previous implicit declaration of 'test_cpu_flag' with type 'int()'
      98 |         if (!test_cpu_flag(CIF_FPU))
         |              ^~~~~~~~~~~~~
   net/tls/ttls.c: In function '__ttls_send_record':
   net/tls/ttls.c:1031:57: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
    1031 |                 T_DBG("TLS send callback error %d\n", r);
         |                                                         ^
   net/tls/ttls.c: At top level:
   net/tls/ttls.c:1290:1: warning: no previous prototype for 'ttls_handle_alert' [-Wmissing-prototypes]
    1290 | ttls_handle_alert(TlsCtx *tls)
         | ^~~~~~~~~~~~~~~~~
   net/tls/ttls.c: In function 'ttls_parse_certificate':
   net/tls/ttls.c:1582:74: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
    1582 |                         T_DBG("client cert verification status: %d\n", r);
         |                                                                          ^
   net/tls/ttls.c: In function 'ttls_recv':
>> net/tls/ttls.c:2148:9: error: too few arguments to function 'kernel_fpu_begin'
    2148 |         kernel_fpu_begin();
         |         ^~~~~~~~~~~~~~~~
   In file included from net/tls/ttls.c:28:
   arch/s390/include/asm/fpu/api.h:94:20: note: declared here
      94 | static inline void kernel_fpu_begin(struct kernel_fpu *state, u32 flags)
         |                    ^~~~~~~~~~~~~~~~
>> net/tls/ttls.c:2270:9: error: too few arguments to function 'kernel_fpu_end'
    2270 |         kernel_fpu_end();
         |         ^~~~~~~~~~~~~~
   In file included from net/tls/ttls.c:28:
   arch/s390/include/asm/fpu/api.h:107:20: note: declared here
     107 | static inline void kernel_fpu_end(struct kernel_fpu *state, u32 flags)
         |                    ^~~~~~~~~~~~~~
   net/tls/ttls.c: At top level:
   net/tls/ttls.c:2470:1: warning: no previous prototype for 'ttls_sig_hash_set_has' [-Wmissing-prototypes]
    2470 | ttls_sig_hash_set_has(TlsSigHashSet *set, ttls_pk_type_t sig_alg,
         | ^~~~~~~~~~~~~~~~~~~~~
   net/tls/ttls.c:2484:1: warning: no previous prototype for 'ttls_sig_hash_set_const' [-Wmissing-prototypes]
    2484 | ttls_sig_hash_set_const(TlsSigHashSet *set, ttls_pk_type_t sig_alg,
         | ^~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for CRYPTO_SHA1_SSSE3
   Depends on CRYPTO && X86 && 64BIT
   Selected by
   - TLS_HANDSHAKE && NET && TLS && TLS_SOFTIRQ


vim +/kernel_fpu_begin +2148 net/tls/ttls.c

  2111	
  2112	/**
  2113	 * Main TLS receive routine.
  2114	 *
  2115	 * Read a record, only one. A caller will call us again if a following record,
  2116	 * or it's part, is left in @buf.
  2117	 *
  2118	 * Silently ignore non-fatal alert and continue reading until a valid record is
  2119	 * found.
  2120	 *
  2121	 * @buf and @len defines a chunk of ingress network data, probably containing
  2122	 * parts of several TLS messages, e.g. a tail of last message, a short full
  2123	 * message and a begin of a next message.
  2124	 *
  2125	 * @return -EAGAIN if there is no ready data for upper layer (e.g. during
  2126	 * handshake or current record isn't fully read) and T_PASS if a record is ready
  2127	 * for upper layer protocol processing. Other negative values are returned on
  2128	 * errors.
  2129	 * The function adds the number of bytes parsed in @buf to @read.
  2130	 */
  2131	int
  2132	ttls_recv(void *tls_data, unsigned char *buf, size_t len, unsigned int *read)
  2133	{
  2134		int r;
  2135		unsigned int hh_len = 0, parsed = *read;
  2136		TlsCtx *tls = (TlsCtx *)tls_data;
  2137		TlsIOCtx *io = &tls->io_in;
  2138	
  2139		BUG_ON(!tls || !tls->conf);
  2140		T_DBG3("%s: tls=%pK len=%lu read=%u\n", __func__, tls, len, *read);
  2141	
  2142		/*
  2143		 * There are many code executed under the saved FPU context and
  2144		 * probably we won't call SIMD at all. However, in normal case
  2145		 * we do several crypto operations requiring SIMD and we do our
  2146		 * best to minimize the number of FPU context savings and restorings.
  2147		 */
> 2148		kernel_fpu_begin();
  2149	
  2150		if (!(io->st_flags & TTLS_F_ST_HDRIV)) {
  2151			unsigned int delta;
  2152	
  2153			if ((r = ttls_parse_record_hdr(tls, buf, len, read)))
  2154				goto out;
  2155			delta = *read - parsed;
  2156			len -= delta;
  2157			buf += delta;
  2158			parsed = *read;
  2159	
  2160			if (io->msgtype == TTLS_MSG_HANDSHAKE
  2161			    && ttls_hs_checksumable(tls))
  2162			{
  2163				if (likely(delta >= TTLS_HS_HDR_LEN && len > 0)) {
  2164					/*
  2165					 * Compute handshake checksum for the message
  2166					 * body and handshake header in one shot.
  2167					 */
  2168					hh_len = TTLS_HS_HDR_LEN;
  2169				} else {
  2170					ttls_update_checksum(tls, io->hs_hdr,
  2171							     TTLS_HS_HDR_LEN);
  2172				}
  2173			}
  2174		}
  2175		WARN_ON_ONCE(!io->msglen);
  2176	
  2177		/*
  2178		 * Current record is fully read and decrypted if necessary.
  2179		 * Skip alerts and empty records and read a next one.
  2180		 */
  2181		switch (io->msgtype) {
  2182		case TTLS_MSG_ALERT:
  2183			if (unlikely(!ttls_xfrm_ready(tls))) {
  2184				r = ttls_handle_alert(tls);
  2185				goto out;
  2186			}
  2187			break;
  2188	
  2189		case TTLS_MSG_CHANGE_CIPHER_SPEC:
  2190			/* Parsed as part of handshake FSM. */
  2191		case TTLS_MSG_HANDSHAKE:
  2192			if (!len) {
  2193				r = -EAGAIN;
  2194				goto out;
  2195			}
  2196			if (unlikely(tls->state == TTLS_HANDSHAKE_OVER)) {
  2197				T_DBG("refusing renegotiation, sending alert\n");
  2198				ttls_send_alert(tls, TTLS_ALERT_LEVEL_FATAL,
  2199						TTLS_ALERT_MSG_NO_RENEGOTIATION);
  2200				r = TTLS_ERR_UNEXPECTED_MESSAGE;
  2201				goto out;
  2202			}
  2203	
  2204			/*
  2205			 * We add ingress messages to the handshake session checksum
  2206			 * in two different places: here for message chunks and inside
  2207			 * the handshake state machine. @hh_len is used for the
  2208			 * checksumming only. We can not compute checksum for complete
  2209			 * messages here (either before or after the FSM call) because
  2210			 * before Hello message we have no idea which hash algorithm
  2211			 * we should use, but key derieval on KeyExchange phase may
  2212			 * require complete checksum for all the messages including
  2213			 * the KeyExchange one.
  2214			 */
  2215			r = ttls_handshake_step(tls, buf, len, hh_len, read);
  2216	
  2217			/* Cleanup security sensitive temporary data. */
  2218			ttls_mpi_pool_cleanup_ctx(0, true);
  2219	
  2220			if (r == -EAGAIN) {
  2221				/* Add the handshake message chunk to the checksum. */
  2222				BUG_ON(!tls->hs && tls->state != TTLS_HANDSHAKE_OVER);
  2223				if (ttls_hs_checksumable(tls)) {
  2224					size_t n = *read - (int)parsed + hh_len;
  2225					ttls_update_checksum(tls, buf - hh_len, n);
  2226				}
  2227			}
  2228			else if (r) {
  2229				T_DBG("handshake error: %d\n", r);
  2230			}
  2231			goto out;
  2232	
  2233		case TTLS_MSG_APPLICATION_DATA:
  2234			/*
  2235			 * Don't allow application data before secured connection is
  2236			 * established.
  2237			 */
  2238			if (unlikely(tls->state != TTLS_HANDSHAKE_OVER)) {
  2239				T_WARN("TLS context isn't ready after handshake\n");
  2240				r = -EPROTO;
  2241				goto out;
  2242			}
  2243			break;
  2244		}
  2245	
  2246		if (!len) {
  2247			r = -EAGAIN;
  2248			goto out;
  2249		}
  2250	
  2251		/* Encrypted data, crypto context is guaranteed to be ready here. */
  2252		if (io->msglen > io->rlen + len) {
  2253			*read += len;
  2254			io->rlen += len;
  2255			r = -EAGAIN;
  2256			goto out;
  2257		}
  2258		*read += io->msglen - io->rlen;
  2259		if ((r = ttls_decrypt(tls, NULL))) {
  2260			T_DBG("cannot decrypt msg on state %x, ret=%d%s\n",
  2261			      tls->state, r, r == -EBADMSG ? "(bad ciphertext)" : "");
  2262			r = -EPROTO;
  2263			goto out;
  2264		}
  2265	
  2266		if (io->msgtype == TTLS_MSG_ALERT)
  2267			r = ttls_handle_alert(tls);
  2268	
  2269	out:
> 2270		kernel_fpu_end();
  2271	
  2272		return r;
  2273	}
  2274	EXPORT_SYMBOL(ttls_recv);
  2275	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Alexander K <ak@tempesta-tech.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
	Chuck Lever <chuck.lever@oracle.com>
Subject: [cel:topic-rpc-with-tls 9995/9999] net/tls/ttls.c:2148:9: error: too few arguments to function 'kernel_fpu_begin'
Date: Sat, 22 Jan 2022 22:14:19 +0800	[thread overview]
Message-ID: <202201222234.oGj9OPe6-lkp@intel.com> (raw)

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux topic-rpc-with-tls
head:   a72d5318846d67a7f3f5f2bcb4c0c09c4f8907d1
commit: 88772cc15e58e3bb69ab319d7fb2ed0cdce5a5a1 [9995/9999] Introduce CONFIG_TLS_SOFTIRQ to perform all TLS routines in softirq (fixes #1446).
config: s390-allyesconfig (https://download.01.org/0day-ci/archive/20220122/202201222234.oGj9OPe6-lkp@intel.com/config)
compiler: s390-linux-gcc (GCC) 11.2.0
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
        # https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git/commit/?id=88772cc15e58e3bb69ab319d7fb2ed0cdce5a5a1
        git remote add cel git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
        git fetch --no-tags cel topic-rpc-with-tls
        git checkout 88772cc15e58e3bb69ab319d7fb2ed0cdce5a5a1
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=s390 SHELL=/bin/bash

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

All errors (new ones prefixed by >>):

   In file included from net/tls/ttls.c:28:
   arch/s390/include/asm/fpu/api.h: In function 'kernel_fpu_begin':
   arch/s390/include/asm/fpu/api.h:97:14: error: invalid use of undefined type 'struct kernel_fpu'
      97 |         state->mask = S390_lowcore.fpu_flags;
         |              ^~
   arch/s390/include/asm/fpu/api.h:98:14: error: implicit declaration of function 'test_cpu_flag' [-Werror=implicit-function-declaration]
      98 |         if (!test_cpu_flag(CIF_FPU))
         |              ^~~~~~~~~~~~~
   arch/s390/include/asm/fpu/api.h:98:28: error: 'CIF_FPU' undeclared (first use in this function)
      98 |         if (!test_cpu_flag(CIF_FPU))
         |                            ^~~~~~~
   arch/s390/include/asm/fpu/api.h:98:28: note: each undeclared identifier is reported only once for each function it appears in
   arch/s390/include/asm/fpu/api.h:101:23: error: invalid use of undefined type 'struct kernel_fpu'
     101 |         else if (state->mask & flags)
         |                       ^~
   arch/s390/include/asm/fpu/api.h: In function 'kernel_fpu_end':
   arch/s390/include/asm/fpu/api.h:109:39: error: invalid use of undefined type 'struct kernel_fpu'
     109 |         S390_lowcore.fpu_flags = state->mask;
         |                                       ^~
   arch/s390/include/asm/fpu/api.h:110:18: error: invalid use of undefined type 'struct kernel_fpu'
     110 |         if (state->mask & flags)
         |                  ^~
   In file included from arch/s390/include/asm/smp.h:13,
                    from include/linux/smp.h:85,
                    from include/linux/lockdep.h:14,
                    from include/linux/spinlock.h:59,
                    from include/linux/mmzone.h:8,
                    from include/linux/gfp.h:6,
                    from include/linux/slab.h:15,
                    from include/linux/crypto.h:20,
                    from include/crypto/aead.h:11,
                    from net/tls/ttls.c:29:
   arch/s390/include/asm/processor.h: At top level:
   arch/s390/include/asm/processor.h:58:19: error: static declaration of 'test_cpu_flag' follows non-static declaration
      58 | static inline int test_cpu_flag(int flag)
         |                   ^~~~~~~~~~~~~
   In file included from net/tls/ttls.c:28:
   arch/s390/include/asm/fpu/api.h:98:14: note: previous implicit declaration of 'test_cpu_flag' with type 'int()'
      98 |         if (!test_cpu_flag(CIF_FPU))
         |              ^~~~~~~~~~~~~
   net/tls/ttls.c: In function '__ttls_send_record':
   net/tls/ttls.c:1031:57: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
    1031 |                 T_DBG("TLS send callback error %d\n", r);
         |                                                         ^
   net/tls/ttls.c: At top level:
   net/tls/ttls.c:1290:1: warning: no previous prototype for 'ttls_handle_alert' [-Wmissing-prototypes]
    1290 | ttls_handle_alert(TlsCtx *tls)
         | ^~~~~~~~~~~~~~~~~
   net/tls/ttls.c: In function 'ttls_parse_certificate':
   net/tls/ttls.c:1582:74: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
    1582 |                         T_DBG("client cert verification status: %d\n", r);
         |                                                                          ^
   net/tls/ttls.c: In function 'ttls_recv':
>> net/tls/ttls.c:2148:9: error: too few arguments to function 'kernel_fpu_begin'
    2148 |         kernel_fpu_begin();
         |         ^~~~~~~~~~~~~~~~
   In file included from net/tls/ttls.c:28:
   arch/s390/include/asm/fpu/api.h:94:20: note: declared here
      94 | static inline void kernel_fpu_begin(struct kernel_fpu *state, u32 flags)
         |                    ^~~~~~~~~~~~~~~~
>> net/tls/ttls.c:2270:9: error: too few arguments to function 'kernel_fpu_end'
    2270 |         kernel_fpu_end();
         |         ^~~~~~~~~~~~~~
   In file included from net/tls/ttls.c:28:
   arch/s390/include/asm/fpu/api.h:107:20: note: declared here
     107 | static inline void kernel_fpu_end(struct kernel_fpu *state, u32 flags)
         |                    ^~~~~~~~~~~~~~
   net/tls/ttls.c: At top level:
   net/tls/ttls.c:2470:1: warning: no previous prototype for 'ttls_sig_hash_set_has' [-Wmissing-prototypes]
    2470 | ttls_sig_hash_set_has(TlsSigHashSet *set, ttls_pk_type_t sig_alg,
         | ^~~~~~~~~~~~~~~~~~~~~
   net/tls/ttls.c:2484:1: warning: no previous prototype for 'ttls_sig_hash_set_const' [-Wmissing-prototypes]
    2484 | ttls_sig_hash_set_const(TlsSigHashSet *set, ttls_pk_type_t sig_alg,
         | ^~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for CRYPTO_SHA1_SSSE3
   Depends on CRYPTO && X86 && 64BIT
   Selected by
   - TLS_HANDSHAKE && NET && TLS && TLS_SOFTIRQ


vim +/kernel_fpu_begin +2148 net/tls/ttls.c

  2111	
  2112	/**
  2113	 * Main TLS receive routine.
  2114	 *
  2115	 * Read a record, only one. A caller will call us again if a following record,
  2116	 * or it's part, is left in @buf.
  2117	 *
  2118	 * Silently ignore non-fatal alert and continue reading until a valid record is
  2119	 * found.
  2120	 *
  2121	 * @buf and @len defines a chunk of ingress network data, probably containing
  2122	 * parts of several TLS messages, e.g. a tail of last message, a short full
  2123	 * message and a begin of a next message.
  2124	 *
  2125	 * @return -EAGAIN if there is no ready data for upper layer (e.g. during
  2126	 * handshake or current record isn't fully read) and T_PASS if a record is ready
  2127	 * for upper layer protocol processing. Other negative values are returned on
  2128	 * errors.
  2129	 * The function adds the number of bytes parsed in @buf to @read.
  2130	 */
  2131	int
  2132	ttls_recv(void *tls_data, unsigned char *buf, size_t len, unsigned int *read)
  2133	{
  2134		int r;
  2135		unsigned int hh_len = 0, parsed = *read;
  2136		TlsCtx *tls = (TlsCtx *)tls_data;
  2137		TlsIOCtx *io = &tls->io_in;
  2138	
  2139		BUG_ON(!tls || !tls->conf);
  2140		T_DBG3("%s: tls=%pK len=%lu read=%u\n", __func__, tls, len, *read);
  2141	
  2142		/*
  2143		 * There are many code executed under the saved FPU context and
  2144		 * probably we won't call SIMD at all. However, in normal case
  2145		 * we do several crypto operations requiring SIMD and we do our
  2146		 * best to minimize the number of FPU context savings and restorings.
  2147		 */
> 2148		kernel_fpu_begin();
  2149	
  2150		if (!(io->st_flags & TTLS_F_ST_HDRIV)) {
  2151			unsigned int delta;
  2152	
  2153			if ((r = ttls_parse_record_hdr(tls, buf, len, read)))
  2154				goto out;
  2155			delta = *read - parsed;
  2156			len -= delta;
  2157			buf += delta;
  2158			parsed = *read;
  2159	
  2160			if (io->msgtype == TTLS_MSG_HANDSHAKE
  2161			    && ttls_hs_checksumable(tls))
  2162			{
  2163				if (likely(delta >= TTLS_HS_HDR_LEN && len > 0)) {
  2164					/*
  2165					 * Compute handshake checksum for the message
  2166					 * body and handshake header in one shot.
  2167					 */
  2168					hh_len = TTLS_HS_HDR_LEN;
  2169				} else {
  2170					ttls_update_checksum(tls, io->hs_hdr,
  2171							     TTLS_HS_HDR_LEN);
  2172				}
  2173			}
  2174		}
  2175		WARN_ON_ONCE(!io->msglen);
  2176	
  2177		/*
  2178		 * Current record is fully read and decrypted if necessary.
  2179		 * Skip alerts and empty records and read a next one.
  2180		 */
  2181		switch (io->msgtype) {
  2182		case TTLS_MSG_ALERT:
  2183			if (unlikely(!ttls_xfrm_ready(tls))) {
  2184				r = ttls_handle_alert(tls);
  2185				goto out;
  2186			}
  2187			break;
  2188	
  2189		case TTLS_MSG_CHANGE_CIPHER_SPEC:
  2190			/* Parsed as part of handshake FSM. */
  2191		case TTLS_MSG_HANDSHAKE:
  2192			if (!len) {
  2193				r = -EAGAIN;
  2194				goto out;
  2195			}
  2196			if (unlikely(tls->state == TTLS_HANDSHAKE_OVER)) {
  2197				T_DBG("refusing renegotiation, sending alert\n");
  2198				ttls_send_alert(tls, TTLS_ALERT_LEVEL_FATAL,
  2199						TTLS_ALERT_MSG_NO_RENEGOTIATION);
  2200				r = TTLS_ERR_UNEXPECTED_MESSAGE;
  2201				goto out;
  2202			}
  2203	
  2204			/*
  2205			 * We add ingress messages to the handshake session checksum
  2206			 * in two different places: here for message chunks and inside
  2207			 * the handshake state machine. @hh_len is used for the
  2208			 * checksumming only. We can not compute checksum for complete
  2209			 * messages here (either before or after the FSM call) because
  2210			 * before Hello message we have no idea which hash algorithm
  2211			 * we should use, but key derieval on KeyExchange phase may
  2212			 * require complete checksum for all the messages including
  2213			 * the KeyExchange one.
  2214			 */
  2215			r = ttls_handshake_step(tls, buf, len, hh_len, read);
  2216	
  2217			/* Cleanup security sensitive temporary data. */
  2218			ttls_mpi_pool_cleanup_ctx(0, true);
  2219	
  2220			if (r == -EAGAIN) {
  2221				/* Add the handshake message chunk to the checksum. */
  2222				BUG_ON(!tls->hs && tls->state != TTLS_HANDSHAKE_OVER);
  2223				if (ttls_hs_checksumable(tls)) {
  2224					size_t n = *read - (int)parsed + hh_len;
  2225					ttls_update_checksum(tls, buf - hh_len, n);
  2226				}
  2227			}
  2228			else if (r) {
  2229				T_DBG("handshake error: %d\n", r);
  2230			}
  2231			goto out;
  2232	
  2233		case TTLS_MSG_APPLICATION_DATA:
  2234			/*
  2235			 * Don't allow application data before secured connection is
  2236			 * established.
  2237			 */
  2238			if (unlikely(tls->state != TTLS_HANDSHAKE_OVER)) {
  2239				T_WARN("TLS context isn't ready after handshake\n");
  2240				r = -EPROTO;
  2241				goto out;
  2242			}
  2243			break;
  2244		}
  2245	
  2246		if (!len) {
  2247			r = -EAGAIN;
  2248			goto out;
  2249		}
  2250	
  2251		/* Encrypted data, crypto context is guaranteed to be ready here. */
  2252		if (io->msglen > io->rlen + len) {
  2253			*read += len;
  2254			io->rlen += len;
  2255			r = -EAGAIN;
  2256			goto out;
  2257		}
  2258		*read += io->msglen - io->rlen;
  2259		if ((r = ttls_decrypt(tls, NULL))) {
  2260			T_DBG("cannot decrypt msg on state %x, ret=%d%s\n",
  2261			      tls->state, r, r == -EBADMSG ? "(bad ciphertext)" : "");
  2262			r = -EPROTO;
  2263			goto out;
  2264		}
  2265	
  2266		if (io->msgtype == TTLS_MSG_ALERT)
  2267			r = ttls_handle_alert(tls);
  2268	
  2269	out:
> 2270		kernel_fpu_end();
  2271	
  2272		return r;
  2273	}
  2274	EXPORT_SYMBOL(ttls_recv);
  2275	

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

             reply	other threads:[~2022-01-22 14:14 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-22 14:14 kernel test robot [this message]
2022-01-22 14:14 ` [cel:topic-rpc-with-tls 9995/9999] net/tls/ttls.c:2148:9: error: too few arguments to function 'kernel_fpu_begin' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2022-02-18  6:42 kernel test robot

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=202201222234.oGj9OPe6-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@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.