All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Lukasz Majewski <lukma@denx.de>,
	Tristram.Ha@microchip.com, Eric Dumazet <edumazet@google.com>,
	davem@davemloft.net
Cc: oe-kbuild-all@lists.linux.dev, Andrew Lunn <andrew@lunn.ch>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Paolo Abeni <pabeni@redhat.com>,
	Kristian Overskeid <koverskeid@gmail.com>,
	Matthieu Baerts <matthieu.baerts@tessares.net>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	Lukasz Majewski <lukma@denx.de>
Subject: Re: [PATCH] net: hsr : Provide fix for HSRv1 supervisor frames decoding
Date: Sat, 26 Aug 2023 08:38:52 +0800	[thread overview]
Message-ID: <202308260833.erhVKBnc-lkp@intel.com> (raw)
In-Reply-To: <20230825153111.228768-1-lukma@denx.de>

Hi Lukasz,

kernel test robot noticed the following build errors:

[auto build test ERROR on net-next/main]
[also build test ERROR on net/main linus/master v6.5-rc7 next-20230825]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Lukasz-Majewski/net-hsr-Provide-fix-for-HSRv1-supervisor-frames-decoding/20230825-233423
base:   net-next/main
patch link:    https://lore.kernel.org/r/20230825153111.228768-1-lukma%40denx.de
patch subject: [PATCH] net: hsr : Provide fix for HSRv1 supervisor frames decoding
config: riscv-randconfig-001-20230826 (https://download.01.org/0day-ci/archive/20230826/202308260833.erhVKBnc-lkp@intel.com/config)
compiler: riscv64-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20230826/202308260833.erhVKBnc-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202308260833.erhVKBnc-lkp@intel.com/

All errors (new ones prefixed by >>):

   net/hsr/hsr_framereg.c: In function 'hsr_handle_sup_frame':
>> net/hsr/hsr_framereg.c:289:12: error: 'And' undeclared (first use in this function)
     289 |          * And leave the HSR tag.
         |            ^~~
   net/hsr/hsr_framereg.c:289:12: note: each undeclared identifier is reported only once for each function it appears in
>> net/hsr/hsr_framereg.c:289:15: error: expected ';' before 'leave'
     289 |          * And leave the HSR tag.
         |               ^~~~~~
         |               ;


vim +/And +289 net/hsr/hsr_framereg.c

   249	
   250	/* Use the Supervision frame's info about an eventual macaddress_B for merging
   251	 * nodes that has previously had their macaddress_B registered as a separate
   252	 * node.
   253	 */
   254	void hsr_handle_sup_frame(struct hsr_frame_info *frame)
   255	{
   256		struct hsr_node *node_curr = frame->node_src;
   257		struct hsr_port *port_rcv = frame->port_rcv;
   258		struct hsr_priv *hsr = port_rcv->hsr;
   259		struct hsr_sup_payload *hsr_sp;
   260		struct hsr_sup_tlv *hsr_sup_tlv;
   261		struct hsr_node *node_real;
   262		struct sk_buff *skb = NULL;
   263		struct list_head *node_db;
   264		struct ethhdr *ethhdr;
   265		int i;
   266		unsigned int pull_size = 0;
   267		unsigned int total_pull_size = 0;
   268	
   269		/* Here either frame->skb_hsr or frame->skb_prp should be
   270		 * valid as supervision frame always will have protocol
   271		 * header info.
   272		 */
   273		if (frame->skb_hsr)
   274			skb = frame->skb_hsr;
   275		else if (frame->skb_prp)
   276			skb = frame->skb_prp;
   277		else if (frame->skb_std)
   278			skb = frame->skb_std;
   279		if (!skb)
   280			return;
   281	
   282		/* Leave the ethernet header. */
   283		pull_size = sizeof(struct ethhdr);
   284		skb_pull(skb, pull_size);
   285		total_pull_size += pull_size;
   286	
   287		ethhdr = (struct ethhdr *)skb_mac_header(skb);
   288	
 > 289		 * And leave the HSR tag.
   290		 *
   291		 * The HSRv1 supervisory frame encapsulates the v0 frame
   292		 * with EtherType of 0x88FB
   293		 */
   294		if (ethhdr->h_proto == htons(ETH_P_HSR)) {
   295			if (hsr->prot_version == HSR_V1)
   296				/* In the above step the DA, SA and EtherType
   297				 * (0x892F - HSRv1) bytes has been removed.
   298				 *
   299				 * As the HSRv1 has the HSR header added, one need
   300				 * to remove path_and_LSDU_size and sequence_nr fields.
   301				 *
   302				 */
   303				pull_size = 4;
   304			else
   305				pull_size = sizeof(struct hsr_tag);
   306	
   307			skb_pull(skb, pull_size);
   308			total_pull_size += pull_size;
   309		}
   310	
   311		/* And leave the HSR sup tag. */
   312		pull_size = sizeof(struct hsr_tag);
   313		skb_pull(skb, pull_size);
   314		total_pull_size += pull_size;
   315	
   316		/* get HSR sup payload */
   317		if (hsr->prot_version == HSR_V1) {
   318			/* In the HSRv1 supervisor frame, when
   319			 * one with EtherType = 0x88FB is extracted, the Node A
   320			 * MAC address is preceded with type and length elements of TLV
   321			 * data field.
   322			 *
   323			 * It needs to be removed to get the remote peer MAC address.
   324			 */
   325			pull_size = sizeof(struct hsr_sup_tlv);
   326			skb_pull(skb, pull_size);
   327			total_pull_size += pull_size;
   328		}
   329	
   330		hsr_sp = (struct hsr_sup_payload *)skb->data;
   331	
   332		/* Merge node_curr (registered on macaddress_B) into node_real */
   333		node_db = &port_rcv->hsr->node_db;
   334		node_real = find_node_by_addr_A(node_db, hsr_sp->macaddress_A);
   335		if (!node_real)
   336			/* No frame received from AddrA of this node yet */
   337			node_real = hsr_add_node(hsr, node_db, hsr_sp->macaddress_A,
   338						 HSR_SEQNR_START - 1, true,
   339						 port_rcv->type);
   340		if (!node_real)
   341			goto done; /* No mem */
   342		if (node_real == node_curr)
   343			/* Node has already been merged */
   344			goto done;
   345	
   346		/* Leave the first HSR sup payload. */
   347		pull_size = sizeof(struct hsr_sup_payload);
   348		skb_pull(skb, pull_size);
   349		total_pull_size += pull_size;
   350	
   351		/* Get second supervision tlv */
   352		hsr_sup_tlv = (struct hsr_sup_tlv *)skb->data;
   353		/* And check if it is a redbox mac TLV */
   354		if (hsr_sup_tlv->HSR_TLV_type == PRP_TLV_REDBOX_MAC) {
   355			/* We could stop here after pushing hsr_sup_payload,
   356			 * or proceed and allow macaddress_B and for redboxes.
   357			 */
   358			/* Sanity check length */
   359			if (hsr_sup_tlv->HSR_TLV_length != 6)
   360				goto done;
   361	
   362			/* Leave the second HSR sup tlv. */
   363			pull_size = sizeof(struct hsr_sup_tlv);
   364			skb_pull(skb, pull_size);
   365			total_pull_size += pull_size;
   366	
   367			/* Get redbox mac address. */
   368			hsr_sp = (struct hsr_sup_payload *)skb->data;
   369	
   370			/* Check if redbox mac and node mac are equal. */
   371			if (!ether_addr_equal(node_real->macaddress_A, hsr_sp->macaddress_A)) {
   372				/* This is a redbox supervision frame for a VDAN! */
   373				goto done;
   374			}
   375		}
   376	
   377		ether_addr_copy(node_real->macaddress_B, ethhdr->h_source);
   378		spin_lock_bh(&node_real->seq_out_lock);
   379		for (i = 0; i < HSR_PT_PORTS; i++) {
   380			if (!node_curr->time_in_stale[i] &&
   381			    time_after(node_curr->time_in[i], node_real->time_in[i])) {
   382				node_real->time_in[i] = node_curr->time_in[i];
   383				node_real->time_in_stale[i] =
   384							node_curr->time_in_stale[i];
   385			}
   386			if (seq_nr_after(node_curr->seq_out[i], node_real->seq_out[i]))
   387				node_real->seq_out[i] = node_curr->seq_out[i];
   388		}
   389		spin_unlock_bh(&node_real->seq_out_lock);
   390		node_real->addr_B_port = port_rcv->type;
   391	
   392		spin_lock_bh(&hsr->list_lock);
   393		if (!node_curr->removed) {
   394			list_del_rcu(&node_curr->mac_list);
   395			node_curr->removed = true;
   396			kfree_rcu(node_curr, rcu_head);
   397		}
   398		spin_unlock_bh(&hsr->list_lock);
   399	
   400	done:
   401		/* Push back here */
   402		skb_push(skb, total_pull_size);
   403	}
   404	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  parent reply	other threads:[~2023-08-26  0:39 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-25 15:31 [PATCH] net: hsr : Provide fix for HSRv1 supervisor frames decoding Lukasz Majewski
2023-08-25 18:10 ` Tristram.Ha
2023-08-28  9:02   ` Lukasz Majewski
2023-08-31 13:38     ` Lukasz Majewski
2023-09-04 15:54     ` Lukasz Majewski
2023-08-25 23:44 ` kernel test robot
2023-08-26  0:38 ` kernel test robot [this message]
2023-09-05  8:06 ` Sebastian Andrzej Siewior
2023-09-05  9:55   ` Lukasz Majewski
2023-09-11 14:57     ` Lukasz Majewski
2023-09-11 15:01       ` Sebastian Andrzej Siewior
2023-09-12  8:18         ` Lukasz Majewski
2023-09-13 16:32           ` Sebastian Andrzej Siewior
2023-09-14 12:26             ` Lukasz Majewski
2023-09-14 12:32               ` Sebastian Andrzej Siewior

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=202308260833.erhVKBnc-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=Tristram.Ha@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=bigeasy@linutronix.de \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=f.fainelli@gmail.com \
    --cc=koverskeid@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukma@denx.de \
    --cc=matthieu.baerts@tessares.net \
    --cc=netdev@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pabeni@redhat.com \
    /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.