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
next 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.