All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH net-next 5/5] mctp: Add SIOCMCTP{ALLOC, DROP}TAG ioctls for tag control
Date: Thu, 10 Feb 2022 01:43:35 +0800	[thread overview]
Message-ID: <202202100128.Jug3BevE-lkp@intel.com> (raw)

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

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220208094617.3675511-6-jk@codeconstruct.com.au>
References: <20220208094617.3675511-6-jk@codeconstruct.com.au>
TO: Jeremy Kerr <jk@codeconstruct.com.au>

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/202202100128.Jug3BevE-lkp(a)intel.com/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 <lkp@intel.com>


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/kbuild-all(a)lists.01.org

             reply	other threads:[~2022-02-09 17:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-09 17:43 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-02-13  1:46 [PATCH net-next 5/5] mctp: Add SIOCMCTP{ALLOC, DROP}TAG ioctls for tag control kernel test robot
2022-02-08  9:46 [PATCH net-next 0/5] MCTP tag control interface Jeremy Kerr
2022-02-08  9:46 ` [PATCH net-next 5/5] mctp: Add SIOCMCTP{ALLOC,DROP}TAG ioctls for tag control Jeremy Kerr
2022-02-08 16:10   ` kernel test robot
2022-02-08 16:10     ` [PATCH net-next 5/5] mctp: Add SIOCMCTP{ALLOC, DROP}TAG " 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=202202100128.Jug3BevE-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.