CC: [email protected] CC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Jeremy Kerr <[email protected]>
Hi Jeremy, I love your patch! Perhaps something to improve: [auto build test WARNING on net-next/master] url: https://github.com/0day-ci/linux/commits/Jeremy-Kerr/MCTP-tag-control-interface/20220208-195325 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git c3e676b98326a419f30dd5d956c68fc33323f4fd :::::: branch date: 30 hours ago :::::: commit date: 30 hours ago config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220210/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project e8bff9ae54a55b4dbfeb6ba55f723abbd81bf494) 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://github.com/0day-ci/linux/commit/a1d553f399d7457bd3e455cd3f5e10dddb4bc2bf git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Jeremy-Kerr/MCTP-tag-control-interface/20220208-195325 git checkout a1d553f399d7457bd3e455cd3f5e10dddb4bc2bf # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mctp/route.c:335:2: note: Taking false branch if (skb->len < sizeof(struct mctp_hdr) + 1) ^ net/mctp/route.c:342:6: note: Assuming field 'ver' is equal to 1 if (mh->ver != 1) ^~~~~~~~~~~~ net/mctp/route.c:342:2: note: Taking false branch if (mh->ver != 1) ^ net/mctp/route.c:355:6: note: Assuming the condition is true if (flags & MCTP_HDR_FLAG_SOM) { ^~~~~~~~~~~~~~~~~~~~~~~~~ net/mctp/route.c:355:2: note: Taking true branch if (flags & MCTP_HDR_FLAG_SOM) { ^ net/mctp/route.c:356:7: note: 'key' is null if (key) { ^~~ net/mctp/route.c:356:3: note: Taking false branch if (key) { ^ net/mctp/route.c:365:8: note: 'key' is null if (key) { ^~~ net/mctp/route.c:365:4: note: Taking false branch if (key) { ^ net/mctp/route.c:374:8: note: 'key' is null if (!key && !msk && (tag & MCTP_HDR_FLAG_TO)) ^~~ net/mctp/route.c:374:7: note: Left side of '&&' is true if (!key && !msk && (tag & MCTP_HDR_FLAG_TO)) ^ net/mctp/route.c:374:16: note: 'msk' is null if (!key && !msk && (tag & MCTP_HDR_FLAG_TO)) ^~~ net/mctp/route.c:374:7: note: Left side of '&&' is true if (!key && !msk && (tag & MCTP_HDR_FLAG_TO)) ^ net/mctp/route.c:374:24: note: Assuming the condition is true if (!key && !msk && (tag & MCTP_HDR_FLAG_TO)) ^~~~~~~~~~~~~~~~~~~~~~ net/mctp/route.c:374:3: note: Taking true branch if (!key && !msk && (tag & MCTP_HDR_FLAG_TO)) ^ net/mctp/route.c:377:8: note: 'msk' is non-null if (!msk) { ^~~ net/mctp/route.c:377:3: note: Taking false branch if (!msk) { ^ net/mctp/route.c:385:7: note: Assuming the condition is false if (flags & MCTP_HDR_FLAG_EOM) { ^~~~~~~~~~~~~~~~~~~~~~~~~ net/mctp/route.c:385:3: note: Taking false branch if (flags & MCTP_HDR_FLAG_EOM) { ^ net/mctp/route.c:402:8: note: 'key' is null if (!key) { ^~~ net/mctp/route.c:402:3: note: Taking true branch if (!key) { ^ net/mctp/route.c:403:10: note: Calling 'mctp_key_alloc' key = mctp_key_alloc(msk, mh->dest, mh->src, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mctp/route.c:140:6: note: Assuming 'key' is non-null if (!key) ^~~~ net/mctp/route.c:140:2: note: Taking false branch if (!key) ^ net/mctp/route.c:148:2: note: Loop condition is false. Exiting loop spin_lock_init(&key->lock); ^ include/linux/spinlock.h:329:35: note: expanded from macro 'spin_lock_init' # define spin_lock_init(lock) \ ^ net/mctp/route.c:403:10: note: Returning from 'mctp_key_alloc' key = mctp_key_alloc(msk, mh->dest, mh->src, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/mctp/route.c:405:9: note: 'key' is non-null if (!key) { ^~~ net/mctp/route.c:405:4: note: Taking false branch if (!key) { ^ net/mctp/route.c:422:8: note: Assuming 'rc' is not equal to 0 if (rc) ^~ net/mctp/route.c:422:4: note: Taking true branch if (rc) ^ net/mctp/route.c:423:5: note: Memory is released kfree(key); ^~~~~~~~~~ net/mctp/route.c:425:4: note: Use of memory after it is freed trace_mctp_key_acquire(key); ^ ~~~ >> net/mctp/route.c:458:4: warning: Value stored to 'msk' is never read >> [clang-analyzer-deadcode.DeadStores] msk = container_of(key->sk, struct mctp_sock, sk); ^ net/mctp/route.c:458:4: note: Value stored to 'msk' is never read Suppressed 11 warnings (10 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. 10 warnings generated. Suppressed 10 warnings (10 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. 10 warnings generated. Suppressed 10 warnings (10 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. 10 warnings generated. Suppressed 10 warnings (10 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. 10 warnings generated. Suppressed 10 warnings (10 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. 5 warnings generated. 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. 4 warnings generated. 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. 4 warnings generated. 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. 4 warnings generated. 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. 4 warnings generated. 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. 4 warnings generated. 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. 4 warnings generated. 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. 4 warnings generated. 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. 4 warnings generated. 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. 4 warnings generated. 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. 4 warnings generated. 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. 4 warnings generated. 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. 14 warnings generated. drivers/char/ipmi/ipmi_ssif.c:198:8: warning: Excessive padding in 'struct ssif_info' (35 padding bytes, where 3 is optimal). Optimal fields order: intf, waiting_msg, curr_msg, ssif_debug, addr_info, client, done_handler, thread, i2c_data, watch_timeout, multi_data, lock, retry_timer, watch_timer, handlers, wake_thread, ssif_state, addr_source, rtc_us_timer, data_len, i2c_read_write, i2c_command, i2c_size, retries_left, multi_support, supports_pec, multi_len, multi_pos, stats, msg_flags, global_enables, has_event_buffer, supports_alert, got_alert, waiting_alert, req_events, req_flags, stopping, max_xmit_msg_size, max_recv_msg_size, cmd8_works, recv, data, consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding] vim +/msk +458 net/mctp/route.c 4a992bbd3650947 Jeremy Kerr 2021-07-29 315 889b7da23abf92f Jeremy Kerr 2021-07-29 316 static int mctp_route_input(struct mctp_route *route, struct sk_buff *skb) 889b7da23abf92f Jeremy Kerr 2021-07-29 317 { 833ef3b91de692e Jeremy Kerr 2021-07-29 318 struct net *net = dev_net(skb->dev); 833ef3b91de692e Jeremy Kerr 2021-07-29 319 struct mctp_sk_key *key; 833ef3b91de692e Jeremy Kerr 2021-07-29 320 struct mctp_sock *msk; 833ef3b91de692e Jeremy Kerr 2021-07-29 321 struct mctp_hdr *mh; 4a992bbd3650947 Jeremy Kerr 2021-07-29 322 unsigned long f; 4a992bbd3650947 Jeremy Kerr 2021-07-29 323 u8 tag, flags; 4a992bbd3650947 Jeremy Kerr 2021-07-29 324 int rc; 833ef3b91de692e Jeremy Kerr 2021-07-29 325 833ef3b91de692e Jeremy Kerr 2021-07-29 326 msk = NULL; 4a992bbd3650947 Jeremy Kerr 2021-07-29 327 rc = -EINVAL; 833ef3b91de692e Jeremy Kerr 2021-07-29 328 833ef3b91de692e Jeremy Kerr 2021-07-29 329 /* we may be receiving a locally-routed packet; drop source sk 833ef3b91de692e Jeremy Kerr 2021-07-29 330 * accounting 833ef3b91de692e Jeremy Kerr 2021-07-29 331 */ 833ef3b91de692e Jeremy Kerr 2021-07-29 332 skb_orphan(skb); 833ef3b91de692e Jeremy Kerr 2021-07-29 333 833ef3b91de692e Jeremy Kerr 2021-07-29 334 /* ensure we have enough data for a header and a type */ 833ef3b91de692e Jeremy Kerr 2021-07-29 335 if (skb->len < sizeof(struct mctp_hdr) + 1) 4a992bbd3650947 Jeremy Kerr 2021-07-29 336 goto out; 833ef3b91de692e Jeremy Kerr 2021-07-29 337 833ef3b91de692e Jeremy Kerr 2021-07-29 338 /* grab header, advance data ptr */ 833ef3b91de692e Jeremy Kerr 2021-07-29 339 mh = mctp_hdr(skb); 833ef3b91de692e Jeremy Kerr 2021-07-29 340 skb_pull(skb, sizeof(struct mctp_hdr)); 833ef3b91de692e Jeremy Kerr 2021-07-29 341 833ef3b91de692e Jeremy Kerr 2021-07-29 342 if (mh->ver != 1) 4a992bbd3650947 Jeremy Kerr 2021-07-29 343 goto out; 833ef3b91de692e Jeremy Kerr 2021-07-29 344 4a992bbd3650947 Jeremy Kerr 2021-07-29 345 flags = mh->flags_seq_tag & (MCTP_HDR_FLAG_SOM | MCTP_HDR_FLAG_EOM); 4a992bbd3650947 Jeremy Kerr 2021-07-29 346 tag = mh->flags_seq_tag & (MCTP_HDR_TAG_MASK | MCTP_HDR_FLAG_TO); 833ef3b91de692e Jeremy Kerr 2021-07-29 347 833ef3b91de692e Jeremy Kerr 2021-07-29 348 rcu_read_lock(); 4a992bbd3650947 Jeremy Kerr 2021-07-29 349 73c618456dc5cf2 Jeremy Kerr 2021-09-29 350 /* lookup socket / reasm context, exactly matching (src,dest,tag). 73c618456dc5cf2 Jeremy Kerr 2021-09-29 351 * we hold a ref on the key, and key->lock held. 73c618456dc5cf2 Jeremy Kerr 2021-09-29 352 */ 73c618456dc5cf2 Jeremy Kerr 2021-09-29 353 key = mctp_lookup_key(net, skb, mh->src, &f); 833ef3b91de692e Jeremy Kerr 2021-07-29 354 4a992bbd3650947 Jeremy Kerr 2021-07-29 355 if (flags & MCTP_HDR_FLAG_SOM) { 4a992bbd3650947 Jeremy Kerr 2021-07-29 356 if (key) { 4a992bbd3650947 Jeremy Kerr 2021-07-29 357 msk = container_of(key->sk, struct mctp_sock, sk); 4a992bbd3650947 Jeremy Kerr 2021-07-29 358 } else { 4a992bbd3650947 Jeremy Kerr 2021-07-29 359 /* first response to a broadcast? do a more general 4a992bbd3650947 Jeremy Kerr 2021-07-29 360 * key lookup to find the socket, but don't use this 4a992bbd3650947 Jeremy Kerr 2021-07-29 361 * key for reassembly - we'll create a more specific 4a992bbd3650947 Jeremy Kerr 2021-07-29 362 * one for future packets if required (ie, !EOM). 4a992bbd3650947 Jeremy Kerr 2021-07-29 363 */ 73c618456dc5cf2 Jeremy Kerr 2021-09-29 364 key = mctp_lookup_key(net, skb, MCTP_ADDR_ANY, &f); 4a992bbd3650947 Jeremy Kerr 2021-07-29 365 if (key) { 4a992bbd3650947 Jeremy Kerr 2021-07-29 366 msk = container_of(key->sk, 4a992bbd3650947 Jeremy Kerr 2021-07-29 367 struct mctp_sock, sk); 73c618456dc5cf2 Jeremy Kerr 2021-09-29 368 spin_unlock_irqrestore(&key->lock, f); 73c618456dc5cf2 Jeremy Kerr 2021-09-29 369 mctp_key_unref(key); 4a992bbd3650947 Jeremy Kerr 2021-07-29 370 key = NULL; 4a992bbd3650947 Jeremy Kerr 2021-07-29 371 } 4a992bbd3650947 Jeremy Kerr 2021-07-29 372 } 833ef3b91de692e Jeremy Kerr 2021-07-29 373 4a992bbd3650947 Jeremy Kerr 2021-07-29 374 if (!key && !msk && (tag & MCTP_HDR_FLAG_TO)) 833ef3b91de692e Jeremy Kerr 2021-07-29 375 msk = mctp_lookup_bind(net, skb); 833ef3b91de692e Jeremy Kerr 2021-07-29 376 4a992bbd3650947 Jeremy Kerr 2021-07-29 377 if (!msk) { 4a992bbd3650947 Jeremy Kerr 2021-07-29 378 rc = -ENOENT; 4a992bbd3650947 Jeremy Kerr 2021-07-29 379 goto out_unlock; 4a992bbd3650947 Jeremy Kerr 2021-07-29 380 } 833ef3b91de692e Jeremy Kerr 2021-07-29 381 4a992bbd3650947 Jeremy Kerr 2021-07-29 382 /* single-packet message? deliver to socket, clean up any 4a992bbd3650947 Jeremy Kerr 2021-07-29 383 * pending key. 4a992bbd3650947 Jeremy Kerr 2021-07-29 384 */ 4a992bbd3650947 Jeremy Kerr 2021-07-29 385 if (flags & MCTP_HDR_FLAG_EOM) { 833ef3b91de692e Jeremy Kerr 2021-07-29 386 sock_queue_rcv_skb(&msk->sk, skb); 4a992bbd3650947 Jeremy Kerr 2021-07-29 387 if (key) { 4a992bbd3650947 Jeremy Kerr 2021-07-29 388 /* we've hit a pending reassembly; not much we 4a992bbd3650947 Jeremy Kerr 2021-07-29 389 * can do but drop it 4a992bbd3650947 Jeremy Kerr 2021-07-29 390 */ a1d553f399d7457 Matt Johnston 2022-02-08 391 __mctp_key_done_in(key, net, f, 4f9e1ba6de45aa8 Jeremy Kerr 2021-09-29 392 MCTP_TRACE_KEY_REPLIED); 73c618456dc5cf2 Jeremy Kerr 2021-09-29 393 key = NULL; 4a992bbd3650947 Jeremy Kerr 2021-07-29 394 } 4a992bbd3650947 Jeremy Kerr 2021-07-29 395 rc = 0; 4a992bbd3650947 Jeremy Kerr 2021-07-29 396 goto out_unlock; 4a992bbd3650947 Jeremy Kerr 2021-07-29 397 } 833ef3b91de692e Jeremy Kerr 2021-07-29 398 4a992bbd3650947 Jeremy Kerr 2021-07-29 399 /* broadcast response or a bind() - create a key for further 4a992bbd3650947 Jeremy Kerr 2021-07-29 400 * packets for this message 4a992bbd3650947 Jeremy Kerr 2021-07-29 401 */ 4a992bbd3650947 Jeremy Kerr 2021-07-29 402 if (!key) { 4a992bbd3650947 Jeremy Kerr 2021-07-29 403 key = mctp_key_alloc(msk, mh->dest, mh->src, 4a992bbd3650947 Jeremy Kerr 2021-07-29 404 tag, GFP_ATOMIC); 4a992bbd3650947 Jeremy Kerr 2021-07-29 405 if (!key) { 4a992bbd3650947 Jeremy Kerr 2021-07-29 406 rc = -ENOMEM; 4a992bbd3650947 Jeremy Kerr 2021-07-29 407 goto out_unlock; 4a992bbd3650947 Jeremy Kerr 2021-07-29 408 } 833ef3b91de692e Jeremy Kerr 2021-07-29 409 73c618456dc5cf2 Jeremy Kerr 2021-09-29 410 /* we can queue without the key lock here, as the 4a992bbd3650947 Jeremy Kerr 2021-07-29 411 * key isn't observable yet 4a992bbd3650947 Jeremy Kerr 2021-07-29 412 */ 4a992bbd3650947 Jeremy Kerr 2021-07-29 413 mctp_frag_queue(key, skb); 4a992bbd3650947 Jeremy Kerr 2021-07-29 414 4a992bbd3650947 Jeremy Kerr 2021-07-29 415 /* if the key_add fails, we've raced with another 4a992bbd3650947 Jeremy Kerr 2021-07-29 416 * SOM packet with the same src, dest and tag. There's 4a992bbd3650947 Jeremy Kerr 2021-07-29 417 * no way to distinguish future packets, so all we 4a992bbd3650947 Jeremy Kerr 2021-07-29 418 * can do is drop; we'll free the skb on exit from 4a992bbd3650947 Jeremy Kerr 2021-07-29 419 * this function. 4a992bbd3650947 Jeremy Kerr 2021-07-29 420 */ 4a992bbd3650947 Jeremy Kerr 2021-07-29 421 rc = mctp_key_add(key, msk); 4a992bbd3650947 Jeremy Kerr 2021-07-29 422 if (rc) 4a992bbd3650947 Jeremy Kerr 2021-07-29 423 kfree(key); 4a992bbd3650947 Jeremy Kerr 2021-07-29 424 4f9e1ba6de45aa8 Jeremy Kerr 2021-09-29 425 trace_mctp_key_acquire(key); 4f9e1ba6de45aa8 Jeremy Kerr 2021-09-29 426 73c618456dc5cf2 Jeremy Kerr 2021-09-29 427 /* we don't need to release key->lock on exit */ 0b93aed2842d950 Matt Johnston 2021-10-14 428 mctp_key_unref(key); 73c618456dc5cf2 Jeremy Kerr 2021-09-29 429 key = NULL; 4a992bbd3650947 Jeremy Kerr 2021-07-29 430 73c618456dc5cf2 Jeremy Kerr 2021-09-29 431 } else { 4a992bbd3650947 Jeremy Kerr 2021-07-29 432 if (key->reasm_head || key->reasm_dead) { 4a992bbd3650947 Jeremy Kerr 2021-07-29 433 /* duplicate start? drop everything */ a1d553f399d7457 Matt Johnston 2022-02-08 434 __mctp_key_done_in(key, net, f, 4f9e1ba6de45aa8 Jeremy Kerr 2021-09-29 435 MCTP_TRACE_KEY_INVALIDATED); 4a992bbd3650947 Jeremy Kerr 2021-07-29 436 rc = -EEXIST; 73c618456dc5cf2 Jeremy Kerr 2021-09-29 437 key = NULL; 4a992bbd3650947 Jeremy Kerr 2021-07-29 438 } else { 4a992bbd3650947 Jeremy Kerr 2021-07-29 439 rc = mctp_frag_queue(key, skb); 4a992bbd3650947 Jeremy Kerr 2021-07-29 440 } 4a992bbd3650947 Jeremy Kerr 2021-07-29 441 } 4a992bbd3650947 Jeremy Kerr 2021-07-29 442 4a992bbd3650947 Jeremy Kerr 2021-07-29 443 } else if (key) { 4a992bbd3650947 Jeremy Kerr 2021-07-29 444 /* this packet continues a previous message; reassemble 4a992bbd3650947 Jeremy Kerr 2021-07-29 445 * using the message-specific key 4a992bbd3650947 Jeremy Kerr 2021-07-29 446 */ 4a992bbd3650947 Jeremy Kerr 2021-07-29 447 4a992bbd3650947 Jeremy Kerr 2021-07-29 448 /* we need to be continuing an existing reassembly... */ 4a992bbd3650947 Jeremy Kerr 2021-07-29 449 if (!key->reasm_head) 4a992bbd3650947 Jeremy Kerr 2021-07-29 450 rc = -EINVAL; 4a992bbd3650947 Jeremy Kerr 2021-07-29 451 else 4a992bbd3650947 Jeremy Kerr 2021-07-29 452 rc = mctp_frag_queue(key, skb); 4a992bbd3650947 Jeremy Kerr 2021-07-29 453 4a992bbd3650947 Jeremy Kerr 2021-07-29 454 /* end of message? deliver to socket, and we're done with 4a992bbd3650947 Jeremy Kerr 2021-07-29 455 * the reassembly/response key 4a992bbd3650947 Jeremy Kerr 2021-07-29 456 */ 4a992bbd3650947 Jeremy Kerr 2021-07-29 457 if (!rc && flags & MCTP_HDR_FLAG_EOM) { a1d553f399d7457 Matt Johnston 2022-02-08 @458 msk = container_of(key->sk, struct mctp_sock, sk); 4a992bbd3650947 Jeremy Kerr 2021-07-29 459 sock_queue_rcv_skb(key->sk, key->reasm_head); 4a992bbd3650947 Jeremy Kerr 2021-07-29 460 key->reasm_head = NULL; a1d553f399d7457 Matt Johnston 2022-02-08 461 __mctp_key_done_in(key, net, f, MCTP_TRACE_KEY_REPLIED); 73c618456dc5cf2 Jeremy Kerr 2021-09-29 462 key = NULL; 4a992bbd3650947 Jeremy Kerr 2021-07-29 463 } 4a992bbd3650947 Jeremy Kerr 2021-07-29 464 4a992bbd3650947 Jeremy Kerr 2021-07-29 465 } else { 4a992bbd3650947 Jeremy Kerr 2021-07-29 466 /* not a start, no matching key */ 4a992bbd3650947 Jeremy Kerr 2021-07-29 467 rc = -ENOENT; 4a992bbd3650947 Jeremy Kerr 2021-07-29 468 } 4a992bbd3650947 Jeremy Kerr 2021-07-29 469 4a992bbd3650947 Jeremy Kerr 2021-07-29 470 out_unlock: 833ef3b91de692e Jeremy Kerr 2021-07-29 471 rcu_read_unlock(); 73c618456dc5cf2 Jeremy Kerr 2021-09-29 472 if (key) { 73c618456dc5cf2 Jeremy Kerr 2021-09-29 473 spin_unlock_irqrestore(&key->lock, f); 73c618456dc5cf2 Jeremy Kerr 2021-09-29 474 mctp_key_unref(key); 73c618456dc5cf2 Jeremy Kerr 2021-09-29 475 } 4a992bbd3650947 Jeremy Kerr 2021-07-29 476 out: 4a992bbd3650947 Jeremy Kerr 2021-07-29 477 if (rc) 889b7da23abf92f Jeremy Kerr 2021-07-29 478 kfree_skb(skb); 4a992bbd3650947 Jeremy Kerr 2021-07-29 479 return rc; 4a992bbd3650947 Jeremy Kerr 2021-07-29 480 } 4a992bbd3650947 Jeremy Kerr 2021-07-29 481 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
