* [ti:ti-linux-5.4.y 7856/9102] net/hsr/hsr_device.c:520 send_hsr_supervision_frame() error: double unlocked 'hsr->seqnr_lock' (orig line 492)
@ 2020-08-25 5:34 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-08-25 5:34 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 11579 bytes --]
CC: kbuild-all(a)lists.01.org
TO: Murali Karicheri <m-karicheri2@ti.com>
CC: Grygorii Strashko <grygorii.strashko@ti.com>
tree: git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git ti-linux-5.4.y
head: 7e56cd9ced296dbf411d0ccdc1fa2135345eebf3
commit: a3f4bfaeea6fb1a3d14dcc3ab8e2cf7da5f6f0ee [7856/9102] net: hsr/prp: Support VLAN tagged supervision frames
:::::: branch date: 17 hours ago
:::::: commit date: 9 weeks ago
config: h8300-randconfig-m031-20200824 (attached as .config)
compiler: h8300-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
net/hsr/hsr_device.c:520 send_hsr_supervision_frame() error: double unlocked 'hsr->seqnr_lock' (orig line 492)
git remote add ti git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git
git fetch --no-tags ti ti-linux-5.4.y
git checkout a3f4bfaeea6fb1a3d14dcc3ab8e2cf7da5f6f0ee
vim +520 net/hsr/hsr_device.c
f421436a591d34 Arvid Brodin 2013-10-30 394
ee1c2797728490 Peter Heise 2016-04-13 395 static void send_hsr_supervision_frame(struct hsr_port *master,
b1b4aa91408028 Murali Karicheri 2019-04-05 396 u8 type, u8 hsr_ver)
f421436a591d34 Arvid Brodin 2013-10-30 397 {
f421436a591d34 Arvid Brodin 2013-10-30 398 struct sk_buff *skb;
f421436a591d34 Arvid Brodin 2013-10-30 399 int hlen, tlen;
9cc476d92a4b40 Murali Karicheri 2020-06-02 400 struct hsr_tag *hsr_tag = NULL;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 401 struct vlan_hdr *vhdr;
9cc476d92a4b40 Murali Karicheri 2020-06-02 402 struct prp_rct *rct;
f421436a591d34 Arvid Brodin 2013-10-30 403 struct hsr_sup_tag *hsr_stag;
f421436a591d34 Arvid Brodin 2013-10-30 404 struct hsr_sup_payload *hsr_sp;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 405 struct hsr_priv *hsr;
f421436a591d34 Arvid Brodin 2013-10-30 406 unsigned long irqflags;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 407 u16 proto, vlan_tci = 0;
9cc476d92a4b40 Murali Karicheri 2020-06-02 408 u8 *tail;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 409 int len;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 410
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 411 hsr = master->hsr;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 412
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 413 if (hsr->disable_sv_frame)
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 414 return;
f421436a591d34 Arvid Brodin 2013-10-30 415
c5a75911721002 Arvid Brodin 2014-07-04 416 hlen = LL_RESERVED_SPACE(master->dev);
c5a75911721002 Arvid Brodin 2014-07-04 417 tlen = master->dev->needed_tailroom;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 418 len = sizeof(struct hsr_tag) +
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 419 sizeof(struct hsr_sup_tag) +
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 420 sizeof(struct hsr_sup_payload) + hlen + tlen;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 421
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 422 if (hsr->use_vlan_for_sv)
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 423 len += VLAN_HLEN;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 424
9cc476d92a4b40 Murali Karicheri 2020-06-02 425 /* skb size is same for PRP/HSR frames, only difference
9cc476d92a4b40 Murali Karicheri 2020-06-02 426 * being, for PRP it is a trailer and for HSR it is a
9cc476d92a4b40 Murali Karicheri 2020-06-02 427 * header
9cc476d92a4b40 Murali Karicheri 2020-06-02 428 */
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 429 skb = dev_alloc_skb(len);
05ca6e644dc9b7 Murali Karicheri 2019-04-05 430 if (!skb)
f421436a591d34 Arvid Brodin 2013-10-30 431 return;
f421436a591d34 Arvid Brodin 2013-10-30 432
f421436a591d34 Arvid Brodin 2013-10-30 433 skb_reserve(skb, hlen);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 434 skb->dev = master->dev;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 435 if (hsr->use_vlan_for_sv) {
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 436 proto = ETH_P_8021Q;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 437 skb->priority = hsr->sv_frame_pcp;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 438 } else {
9cc476d92a4b40 Murali Karicheri 2020-06-02 439 if (!hsr_ver)
9cc476d92a4b40 Murali Karicheri 2020-06-02 440 proto = ETH_P_PRP;
9cc476d92a4b40 Murali Karicheri 2020-06-02 441 else
9cc476d92a4b40 Murali Karicheri 2020-06-02 442 proto = (hsr_ver == HSR_V1) ? ETH_P_HSR : ETH_P_PRP;
f421436a591d34 Arvid Brodin 2013-10-30 443 skb->priority = TC_PRIO_CONTROL;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 444 }
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 445 skb->protocol = htons(proto);
f421436a591d34 Arvid Brodin 2013-10-30 446
9cc476d92a4b40 Murali Karicheri 2020-06-02 447 if (dev_hard_header(skb, skb->dev, proto,
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 448 hsr->sup_multicast_addr,
f266a683a4804d Arvid Brodin 2014-07-04 449 skb->dev->dev_addr, skb->len) <= 0)
f421436a591d34 Arvid Brodin 2013-10-30 450 goto out;
f266a683a4804d Arvid Brodin 2014-07-04 451 skb_reset_mac_header(skb);
5e5eaf92b37ab6 Taehee Yoo 2019-12-22 452 skb_reset_network_header(skb);
5e5eaf92b37ab6 Taehee Yoo 2019-12-22 453 skb_reset_transport_header(skb);
f421436a591d34 Arvid Brodin 2013-10-30 454
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 455 if (hsr->use_vlan_for_sv) {
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 456 vhdr = skb_put(skb, VLAN_HLEN);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 457 vlan_tci = hsr->sv_frame_vid;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 458 vlan_tci |= (hsr->sv_frame_pcp << VLAN_PRIO_SHIFT);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 459 if (hsr->sv_frame_dei)
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 460 vlan_tci |= VLAN_CFI_MASK;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 461 if (!hsr_ver)
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 462 proto = ETH_P_PRP;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 463 else
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 464 proto = (hsr_ver == HSR_V1) ? ETH_P_HSR : ETH_P_PRP;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 465 vhdr->h_vlan_TCI = htons(vlan_tci);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 466 vhdr->h_vlan_encapsulated_proto = htons(proto);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 467 }
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 468
9cc476d92a4b40 Murali Karicheri 2020-06-02 469 if (hsr_ver == HSR_V1) {
b952f4dff27512 yuan linyu 2017-06-18 470 hsr_tag = skb_put(skb, sizeof(struct hsr_tag));
ee1c2797728490 Peter Heise 2016-04-13 471 hsr_tag->encap_proto = htons(ETH_P_PRP);
ee1c2797728490 Peter Heise 2016-04-13 472 set_hsr_tag_LSDU_size(hsr_tag, HSR_V1_SUP_LSDUSIZE);
ee1c2797728490 Peter Heise 2016-04-13 473 }
f421436a591d34 Arvid Brodin 2013-10-30 474
b952f4dff27512 yuan linyu 2017-06-18 475 hsr_stag = skb_put(skb, sizeof(struct hsr_sup_tag));
b1b4aa91408028 Murali Karicheri 2019-04-05 476 set_hsr_stag_path(hsr_stag, (hsr_ver ? 0x0 : 0xf));
9cc476d92a4b40 Murali Karicheri 2020-06-02 477 set_hsr_stag_HSR_ver(hsr_stag, (hsr_ver ? 1 : 0));
f421436a591d34 Arvid Brodin 2013-10-30 478
ee1c2797728490 Peter Heise 2016-04-13 479 /* From HSRv1 on we have separate supervision sequence numbers. */
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 480 spin_lock_irqsave(&hsr->seqnr_lock, irqflags);
b1b4aa91408028 Murali Karicheri 2019-04-05 481 if (hsr_ver > 0) {
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 482 hsr_stag->sequence_nr = htons(hsr->sup_sequence_nr);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 483 hsr->sup_sequence_nr++;
9cc476d92a4b40 Murali Karicheri 2020-06-02 484 if (hsr_ver == HSR_V1) {
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 485 hsr_tag->sequence_nr = htons(hsr->sequence_nr);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 486 hsr->sequence_nr++;
9cc476d92a4b40 Murali Karicheri 2020-06-02 487 }
ee1c2797728490 Peter Heise 2016-04-13 488 } else {
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 489 hsr_stag->sequence_nr = htons(hsr->sequence_nr);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 490 hsr->sequence_nr++;
ee1c2797728490 Peter Heise 2016-04-13 491 }
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 @492 spin_unlock_irqrestore(&hsr->seqnr_lock, irqflags);
f421436a591d34 Arvid Brodin 2013-10-30 493
b1b4aa91408028 Murali Karicheri 2019-04-05 494 hsr_stag->HSR_TLV_type = type;
ee1c2797728490 Peter Heise 2016-04-13 495 /* TODO: Why 12 in HSRv0? */
b1b4aa91408028 Murali Karicheri 2019-04-05 496 hsr_stag->HSR_TLV_length =
b1b4aa91408028 Murali Karicheri 2019-04-05 497 hsr_ver ? sizeof(struct hsr_sup_payload) : 12;
f421436a591d34 Arvid Brodin 2013-10-30 498
f421436a591d34 Arvid Brodin 2013-10-30 499 /* Payload: MacAddressA */
b952f4dff27512 yuan linyu 2017-06-18 500 hsr_sp = skb_put(skb, sizeof(struct hsr_sup_payload));
b1b4aa91408028 Murali Karicheri 2019-04-05 501 ether_addr_copy(hsr_sp->macaddress_A, master->dev->dev_addr);
f421436a591d34 Arvid Brodin 2013-10-30 502
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 503 if (!hsr->use_vlan_for_sv) {
414e7d76af6d3e Florian Fainelli 2017-08-21 504 if (skb_put_padto(skb, ETH_ZLEN + HSR_HLEN))
414e7d76af6d3e Florian Fainelli 2017-08-21 505 return;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 506 } else {
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 507 if (skb_put_padto(skb, ETH_ZLEN + HSR_HLEN + VLAN_HLEN))
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 508 return;
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 509 }
ee1c2797728490 Peter Heise 2016-04-13 510
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 511 spin_lock_irqsave(&hsr->seqnr_lock, irqflags);
9cc476d92a4b40 Murali Karicheri 2020-06-02 512 if (hsr_ver == PRP_V1) {
9cc476d92a4b40 Murali Karicheri 2020-06-02 513 tail = skb_tail_pointer(skb) - HSR_HLEN;
9cc476d92a4b40 Murali Karicheri 2020-06-02 514 rct = (struct prp_rct *)tail;
9cc476d92a4b40 Murali Karicheri 2020-06-02 515 rct->PRP_suffix = htons(ETH_P_PRP);
9cc476d92a4b40 Murali Karicheri 2020-06-02 516 set_prp_LSDU_size(rct, HSR_V1_SUP_LSDUSIZE);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 517 rct->sequence_nr = htons(hsr->sequence_nr);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 518 hsr->sequence_nr++;
9cc476d92a4b40 Murali Karicheri 2020-06-02 519 }
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 @520 spin_unlock_irqrestore(&hsr->seqnr_lock, irqflags);
9cc476d92a4b40 Murali Karicheri 2020-06-02 521
f266a683a4804d Arvid Brodin 2014-07-04 522 hsr_forward_skb(skb, master);
a3f4bfaeea6fb1 Murali Karicheri 2020-06-18 523 INC_CNT_TX_SUP(hsr);
f421436a591d34 Arvid Brodin 2013-10-30 524 return;
f421436a591d34 Arvid Brodin 2013-10-30 525
f421436a591d34 Arvid Brodin 2013-10-30 526 out:
3d1a54e801b661 Dan Carpenter 2015-11-21 527 WARN_ONCE(1, "HSR: Could not send supervision frame\n");
f421436a591d34 Arvid Brodin 2013-10-30 528 kfree_skb(skb);
f421436a591d34 Arvid Brodin 2013-10-30 529 }
f421436a591d34 Arvid Brodin 2013-10-30 530
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 24794 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-08-25 5:34 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-25 5:34 [ti:ti-linux-5.4.y 7856/9102] net/hsr/hsr_device.c:520 send_hsr_supervision_frame() error: double unlocked 'hsr->seqnr_lock' (orig line 492) kernel test robot
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.