midcomms.c (643f5cfa610f475c7465e4158b2b1fdd170fac10) | midcomms.c (1151935182b40bbe398905850f6f7f4fbb262e06) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/****************************************************************************** 3******************************************************************************* 4** 5** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. 6** Copyright (C) 2004-2021 Red Hat, Inc. All rights reserved. 7** 8** --- 485 unchanged lines hidden (view full) --- 494 log_print("%s: unexpected state: %d", 495 __func__, node->state); 496 WARN_ON_ONCE(1); 497 return; 498 } 499 spin_unlock(&node->state_lock); 500} 501 | 1// SPDX-License-Identifier: GPL-2.0-only 2/****************************************************************************** 3******************************************************************************* 4** 5** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. 6** Copyright (C) 2004-2021 Red Hat, Inc. All rights reserved. 7** 8** --- 485 unchanged lines hidden (view full) --- 494 log_print("%s: unexpected state: %d", 495 __func__, node->state); 496 WARN_ON_ONCE(1); 497 return; 498 } 499 spin_unlock(&node->state_lock); 500} 501 |
502static void dlm_receive_buffer_3_2_trace(uint32_t seq, union dlm_packet *p) | 502static void dlm_receive_buffer_3_2_trace(uint32_t seq, 503 const union dlm_packet *p) |
503{ 504 switch (p->header.h_cmd) { 505 case DLM_MSG: 506 trace_dlm_recv_message(dlm_our_nodeid(), seq, &p->message); 507 break; 508 case DLM_RCOM: 509 trace_dlm_recv_rcom(dlm_our_nodeid(), seq, &p->rcom); 510 break; 511 default: 512 break; 513 } 514} 515 | 504{ 505 switch (p->header.h_cmd) { 506 case DLM_MSG: 507 trace_dlm_recv_message(dlm_our_nodeid(), seq, &p->message); 508 break; 509 case DLM_RCOM: 510 trace_dlm_recv_rcom(dlm_our_nodeid(), seq, &p->rcom); 511 break; 512 default: 513 break; 514 } 515} 516 |
516static void dlm_midcomms_receive_buffer(union dlm_packet *p, | 517static void dlm_midcomms_receive_buffer(const union dlm_packet *p, |
517 struct midcomms_node *node, 518 uint32_t seq) 519{ 520 bool is_expected_seq; 521 uint32_t oval, nval; 522 523 do { 524 oval = atomic_read(&node->seq_next); --- 178 unchanged lines hidden (view full) --- 703 log_print_ratelimited("version mismatch detected, assumed 0x%08x but node %d has 0x%08x", 704 DLM_VERSION_3_2, node->nodeid, node->version); 705 return -1; 706 } 707 708 return 0; 709} 710 | 518 struct midcomms_node *node, 519 uint32_t seq) 520{ 521 bool is_expected_seq; 522 uint32_t oval, nval; 523 524 do { 525 oval = atomic_read(&node->seq_next); --- 178 unchanged lines hidden (view full) --- 704 log_print_ratelimited("version mismatch detected, assumed 0x%08x but node %d has 0x%08x", 705 DLM_VERSION_3_2, node->nodeid, node->version); 706 return -1; 707 } 708 709 return 0; 710} 711 |
711static int dlm_opts_check_msglen(union dlm_packet *p, uint16_t msglen, int nodeid) | 712static int dlm_opts_check_msglen(const union dlm_packet *p, uint16_t msglen, 713 int nodeid) |
712{ 713 int len = msglen; 714 715 /* we only trust outer header msglen because 716 * it's checked against receive buffer length. 717 */ 718 if (len < sizeof(struct dlm_opts)) 719 return -1; --- 32 unchanged lines hidden (view full) --- 752 log_print("unsupported o_nextcmd received: %u, will skip this message from node %d", 753 p->opts.o_nextcmd, nodeid); 754 return -1; 755 } 756 757 return 0; 758} 759 | 714{ 715 int len = msglen; 716 717 /* we only trust outer header msglen because 718 * it's checked against receive buffer length. 719 */ 720 if (len < sizeof(struct dlm_opts)) 721 return -1; --- 32 unchanged lines hidden (view full) --- 754 log_print("unsupported o_nextcmd received: %u, will skip this message from node %d", 755 p->opts.o_nextcmd, nodeid); 756 return -1; 757 } 758 759 return 0; 760} 761 |
760static void dlm_midcomms_receive_buffer_3_2(union dlm_packet *p, int nodeid) | 762static void dlm_midcomms_receive_buffer_3_2(const union dlm_packet *p, int nodeid) |
761{ 762 uint16_t msglen = le16_to_cpu(p->header.h_length); 763 struct midcomms_node *node; 764 uint32_t seq; 765 int ret, idx; 766 767 idx = srcu_read_lock(&nodes_srcu); 768 node = dlm_midcomms_recv_node_lookup(nodeid, p, msglen, --- 104 unchanged lines hidden (view full) --- 873 log_print_ratelimited("version mismatch detected, assumed 0x%08x but node %d has 0x%08x", 874 DLM_VERSION_3_1, node->nodeid, node->version); 875 return -1; 876 } 877 878 return 0; 879} 880 | 763{ 764 uint16_t msglen = le16_to_cpu(p->header.h_length); 765 struct midcomms_node *node; 766 uint32_t seq; 767 int ret, idx; 768 769 idx = srcu_read_lock(&nodes_srcu); 770 node = dlm_midcomms_recv_node_lookup(nodeid, p, msglen, --- 104 unchanged lines hidden (view full) --- 875 log_print_ratelimited("version mismatch detected, assumed 0x%08x but node %d has 0x%08x", 876 DLM_VERSION_3_1, node->nodeid, node->version); 877 return -1; 878 } 879 880 return 0; 881} 882 |
881static void dlm_midcomms_receive_buffer_3_1(union dlm_packet *p, int nodeid) | 883static void dlm_midcomms_receive_buffer_3_1(const union dlm_packet *p, int nodeid) |
882{ 883 uint16_t msglen = le16_to_cpu(p->header.h_length); 884 struct midcomms_node *node; 885 int idx; 886 887 idx = srcu_read_lock(&nodes_srcu); 888 node = dlm_midcomms_recv_node_lookup(nodeid, p, msglen, 889 dlm_midcomms_version_check_3_1); --- 82 unchanged lines hidden (view full) --- 972 hd = (struct dlm_header *)ptr; 973 974 msglen = le16_to_cpu(hd->h_length); 975 if (msglen > len) 976 break; 977 978 switch (hd->h_version) { 979 case cpu_to_le32(DLM_VERSION_3_1): | 884{ 885 uint16_t msglen = le16_to_cpu(p->header.h_length); 886 struct midcomms_node *node; 887 int idx; 888 889 idx = srcu_read_lock(&nodes_srcu); 890 node = dlm_midcomms_recv_node_lookup(nodeid, p, msglen, 891 dlm_midcomms_version_check_3_1); --- 82 unchanged lines hidden (view full) --- 974 hd = (struct dlm_header *)ptr; 975 976 msglen = le16_to_cpu(hd->h_length); 977 if (msglen > len) 978 break; 979 980 switch (hd->h_version) { 981 case cpu_to_le32(DLM_VERSION_3_1): |
980 dlm_midcomms_receive_buffer_3_1((union dlm_packet *)ptr, nodeid); | 982 dlm_midcomms_receive_buffer_3_1((const union dlm_packet *)ptr, nodeid); |
981 break; 982 case cpu_to_le32(DLM_VERSION_3_2): | 983 break; 984 case cpu_to_le32(DLM_VERSION_3_2): |
983 dlm_midcomms_receive_buffer_3_2((union dlm_packet *)ptr, nodeid); | 985 dlm_midcomms_receive_buffer_3_2((const union dlm_packet *)ptr, nodeid); |
984 break; 985 default: 986 log_print("received invalid version header: %u from node %d, will skip this message", 987 le32_to_cpu(hd->h_version), nodeid); 988 break; 989 } 990 991 ret += msglen; --- 566 unchanged lines hidden --- | 986 break; 987 default: 988 log_print("received invalid version header: %u from node %d, will skip this message", 989 le32_to_cpu(hd->h_version), nodeid); 990 break; 991 } 992 993 ret += msglen; --- 566 unchanged lines hidden --- |