Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

devlink: convert most of devlink_fmsg_*() to return void

Since struct devlink_fmsg retains error by now (see 1st patch of this
series), there is no longer need to keep returning it in each call.

This is a separate commit to allow per-driver conversion to stop using
those return values.

Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Przemek Kitszel and committed by
David S. Miller
0050629c 3465915e

+110 -130
+26 -26
include/net/devlink.h
··· 1854 1854 const char *version_value, 1855 1855 enum devlink_info_version_type version_type); 1856 1856 1857 - int devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg); 1858 - int devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg); 1857 + void devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg); 1858 + void devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg); 1859 1859 1860 - int devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name); 1861 - int devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg); 1860 + void devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name); 1861 + void devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg); 1862 1862 1863 - int devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg, 1864 - const char *name); 1865 - int devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg); 1866 - int devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg, 1867 - const char *name); 1868 - int devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg); 1863 + void devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg, 1864 + const char *name); 1865 + void devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg); 1866 + void devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg, 1867 + const char *name); 1868 + void devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg); 1869 1869 1870 - int devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value); 1871 - int devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value); 1872 - int devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value, 1873 - u16 value_len); 1870 + void devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value); 1871 + void devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value); 1872 + void devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value, 1873 + u16 value_len); 1874 1874 1875 - int devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name, 1876 - bool value); 1877 - int devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name, 1878 - u8 value); 1879 - int devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name, 1880 - u32 value); 1881 - int devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name, 1882 - u64 value); 1883 - int devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name, 1884 - const char *value); 1885 - int devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name, 1886 - const void *value, u32 value_len); 1875 + void devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name, 1876 + bool value); 1877 + void devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name, 1878 + u8 value); 1879 + void devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name, 1880 + u32 value); 1881 + void devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name, 1882 + u64 value); 1883 + void devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name, 1884 + const char *value); 1885 + void devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name, 1886 + const void *value, u32 value_len); 1887 1887 1888 1888 struct devlink_health_reporter * 1889 1889 devl_port_health_reporter_create(struct devlink_port *port,
+84 -104
net/devlink/health.c
··· 566 566 if (!reporter->dump_fmsg) 567 567 return -ENOMEM; 568 568 569 - err = devlink_fmsg_obj_nest_start(reporter->dump_fmsg); 570 - if (err) 571 - goto dump_err; 569 + devlink_fmsg_obj_nest_start(reporter->dump_fmsg); 572 570 573 571 err = reporter->ops->dump(reporter, reporter->dump_fmsg, 574 572 priv_ctx, extack); 575 573 if (err) 576 574 goto dump_err; 577 575 578 - err = devlink_fmsg_obj_nest_end(reporter->dump_fmsg); 576 + devlink_fmsg_obj_nest_end(reporter->dump_fmsg); 577 + err = reporter->dump_fmsg->err; 579 578 if (err) 580 579 goto dump_err; 581 580 ··· 674 675 fmsg->err = -EINVAL; 675 676 } 676 677 677 - static int devlink_fmsg_nest_common(struct devlink_fmsg *fmsg, int attrtype) 678 + static void devlink_fmsg_nest_common(struct devlink_fmsg *fmsg, int attrtype) 678 679 { 679 680 struct devlink_fmsg_item *item; 680 681 681 682 if (fmsg->err) 682 - return fmsg->err; 683 + return; 683 684 684 685 item = kzalloc(sizeof(*item), GFP_KERNEL); 685 686 if (!item) { 686 687 fmsg->err = -ENOMEM; 687 - return fmsg->err; 688 + return; 688 689 } 689 690 690 691 item->attrtype = attrtype; 691 692 list_add_tail(&item->list, &fmsg->item_list); 692 - 693 - return 0; 694 693 } 695 694 696 - int devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg) 695 + void devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg) 697 696 { 698 697 devlink_fmsg_err_if_binary(fmsg); 699 - return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_OBJ_NEST_START); 698 + devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_OBJ_NEST_START); 700 699 } 701 700 EXPORT_SYMBOL_GPL(devlink_fmsg_obj_nest_start); 702 701 703 - static int devlink_fmsg_nest_end(struct devlink_fmsg *fmsg) 702 + static void devlink_fmsg_nest_end(struct devlink_fmsg *fmsg) 704 703 { 705 704 devlink_fmsg_err_if_binary(fmsg); 706 - return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_NEST_END); 705 + devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_NEST_END); 707 706 } 708 707 709 - int devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg) 708 + void devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg) 710 709 { 711 - return devlink_fmsg_nest_end(fmsg); 710 + devlink_fmsg_nest_end(fmsg); 712 711 } 713 712 EXPORT_SYMBOL_GPL(devlink_fmsg_obj_nest_end); 714 713 715 714 #define DEVLINK_FMSG_MAX_SIZE (GENLMSG_DEFAULT_SIZE - GENL_HDRLEN - NLA_HDRLEN) 716 715 717 - static int devlink_fmsg_put_name(struct devlink_fmsg *fmsg, const char *name) 716 + static void devlink_fmsg_put_name(struct devlink_fmsg *fmsg, const char *name) 718 717 { 719 718 struct devlink_fmsg_item *item; 720 719 721 720 devlink_fmsg_err_if_binary(fmsg); 722 721 if (fmsg->err) 723 - return fmsg->err; 722 + return; 724 723 725 724 if (strlen(name) + 1 > DEVLINK_FMSG_MAX_SIZE) { 726 725 fmsg->err = -EMSGSIZE; 727 - return fmsg->err; 726 + return; 728 727 } 729 728 730 729 item = kzalloc(sizeof(*item) + strlen(name) + 1, GFP_KERNEL); 731 730 if (!item) { 732 731 fmsg->err = -ENOMEM; 733 - return fmsg->err; 732 + return; 734 733 } 735 734 736 735 item->nla_type = NLA_NUL_STRING; ··· 736 739 item->attrtype = DEVLINK_ATTR_FMSG_OBJ_NAME; 737 740 memcpy(&item->value, name, item->len); 738 741 list_add_tail(&item->list, &fmsg->item_list); 739 - 740 - return 0; 741 742 } 742 743 743 - int devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name) 744 + void devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name) 744 745 { 745 746 devlink_fmsg_err_if_binary(fmsg); 746 747 devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_PAIR_NEST_START); 747 - return devlink_fmsg_put_name(fmsg, name); 748 + devlink_fmsg_put_name(fmsg, name); 748 749 } 749 750 EXPORT_SYMBOL_GPL(devlink_fmsg_pair_nest_start); 750 751 751 - int devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg) 752 + void devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg) 752 753 { 753 - return devlink_fmsg_nest_end(fmsg); 754 + devlink_fmsg_nest_end(fmsg); 754 755 } 755 756 EXPORT_SYMBOL_GPL(devlink_fmsg_pair_nest_end); 756 757 757 - int devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg, 758 - const char *name) 758 + void devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg, 759 + const char *name) 759 760 { 760 761 devlink_fmsg_pair_nest_start(fmsg, name); 761 - return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_ARR_NEST_START); 762 + devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_ARR_NEST_START); 762 763 } 763 764 EXPORT_SYMBOL_GPL(devlink_fmsg_arr_pair_nest_start); 764 765 765 - int devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg) 766 + void devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg) 766 767 { 767 768 devlink_fmsg_nest_end(fmsg); 768 - return devlink_fmsg_nest_end(fmsg); 769 + devlink_fmsg_nest_end(fmsg); 769 770 } 770 771 EXPORT_SYMBOL_GPL(devlink_fmsg_arr_pair_nest_end); 771 772 772 - int devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg, 773 - const char *name) 773 + void devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg, 774 + const char *name) 774 775 { 775 - int err; 776 - 777 - err = devlink_fmsg_arr_pair_nest_start(fmsg, name); 778 - if (err) 779 - return err; 780 - 776 + devlink_fmsg_arr_pair_nest_start(fmsg, name); 781 777 fmsg->putting_binary = true; 782 - return 0; 783 778 } 784 779 EXPORT_SYMBOL_GPL(devlink_fmsg_binary_pair_nest_start); 785 780 786 - int devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg) 781 + void devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg) 787 782 { 788 783 if (fmsg->err) 789 - return fmsg->err; 784 + return; 790 785 791 - if (!fmsg->putting_binary) { 786 + if (!fmsg->putting_binary) 792 787 fmsg->err = -EINVAL; 793 - return fmsg->err; 794 - } 795 788 796 789 fmsg->putting_binary = false; 797 - return devlink_fmsg_arr_pair_nest_end(fmsg); 790 + devlink_fmsg_arr_pair_nest_end(fmsg); 798 791 } 799 792 EXPORT_SYMBOL_GPL(devlink_fmsg_binary_pair_nest_end); 800 793 801 - static int devlink_fmsg_put_value(struct devlink_fmsg *fmsg, 802 - const void *value, u16 value_len, 803 - u8 value_nla_type) 794 + static void devlink_fmsg_put_value(struct devlink_fmsg *fmsg, 795 + const void *value, u16 value_len, 796 + u8 value_nla_type) 804 797 { 805 798 struct devlink_fmsg_item *item; 806 799 800 + if (fmsg->err) 801 + return; 802 + 807 803 if (value_len > DEVLINK_FMSG_MAX_SIZE) { 808 804 fmsg->err = -EMSGSIZE; 809 - return fmsg->err; 805 + return; 810 806 } 811 807 812 808 item = kzalloc(sizeof(*item) + value_len, GFP_KERNEL); 813 809 if (!item) { 814 810 fmsg->err = -ENOMEM; 815 - return fmsg->err; 811 + return; 816 812 } 817 813 818 814 item->nla_type = value_nla_type; ··· 813 823 item->attrtype = DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA; 814 824 memcpy(&item->value, value, item->len); 815 825 list_add_tail(&item->list, &fmsg->item_list); 816 - 817 - return 0; 818 826 } 819 827 820 - static int devlink_fmsg_bool_put(struct devlink_fmsg *fmsg, bool value) 828 + static void devlink_fmsg_bool_put(struct devlink_fmsg *fmsg, bool value) 821 829 { 822 830 devlink_fmsg_err_if_binary(fmsg); 823 - return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_FLAG); 831 + devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_FLAG); 824 832 } 825 833 826 - static int devlink_fmsg_u8_put(struct devlink_fmsg *fmsg, u8 value) 834 + static void devlink_fmsg_u8_put(struct devlink_fmsg *fmsg, u8 value) 827 835 { 828 836 devlink_fmsg_err_if_binary(fmsg); 829 - return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U8); 837 + devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U8); 830 838 } 831 839 832 - int devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value) 840 + void devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value) 833 841 { 834 842 devlink_fmsg_err_if_binary(fmsg); 835 - return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U32); 843 + devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U32); 836 844 } 837 845 EXPORT_SYMBOL_GPL(devlink_fmsg_u32_put); 838 846 839 - static int devlink_fmsg_u64_put(struct devlink_fmsg *fmsg, u64 value) 847 + static void devlink_fmsg_u64_put(struct devlink_fmsg *fmsg, u64 value) 840 848 { 841 849 devlink_fmsg_err_if_binary(fmsg); 842 - return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U64); 850 + devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U64); 843 851 } 844 852 845 - int devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value) 853 + void devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value) 846 854 { 847 855 devlink_fmsg_err_if_binary(fmsg); 848 - return devlink_fmsg_put_value(fmsg, value, strlen(value) + 1, 849 - NLA_NUL_STRING); 856 + devlink_fmsg_put_value(fmsg, value, strlen(value) + 1, NLA_NUL_STRING); 850 857 } 851 858 EXPORT_SYMBOL_GPL(devlink_fmsg_string_put); 852 859 853 - int devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value, 854 - u16 value_len) 860 + void devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value, 861 + u16 value_len) 855 862 { 856 - if (!fmsg->putting_binary) 857 - return -EINVAL; 863 + if (!fmsg->err && !fmsg->putting_binary) 864 + fmsg->err = -EINVAL; 858 865 859 - return devlink_fmsg_put_value(fmsg, value, value_len, NLA_BINARY); 866 + devlink_fmsg_put_value(fmsg, value, value_len, NLA_BINARY); 860 867 } 861 868 EXPORT_SYMBOL_GPL(devlink_fmsg_binary_put); 862 869 863 - int devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name, 864 - bool value) 870 + void devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name, 871 + bool value) 865 872 { 866 873 devlink_fmsg_pair_nest_start(fmsg, name); 867 874 devlink_fmsg_bool_put(fmsg, value); 868 - return devlink_fmsg_pair_nest_end(fmsg); 875 + devlink_fmsg_pair_nest_end(fmsg); 869 876 } 870 877 EXPORT_SYMBOL_GPL(devlink_fmsg_bool_pair_put); 871 878 872 - int devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name, 873 - u8 value) 879 + void devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name, 880 + u8 value) 874 881 { 875 882 devlink_fmsg_pair_nest_start(fmsg, name); 876 883 devlink_fmsg_u8_put(fmsg, value); 877 - return devlink_fmsg_pair_nest_end(fmsg); 884 + devlink_fmsg_pair_nest_end(fmsg); 878 885 } 879 886 EXPORT_SYMBOL_GPL(devlink_fmsg_u8_pair_put); 880 887 881 - int devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name, 882 - u32 value) 888 + void devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name, 889 + u32 value) 883 890 { 884 891 devlink_fmsg_pair_nest_start(fmsg, name); 885 892 devlink_fmsg_u32_put(fmsg, value); 886 - return devlink_fmsg_pair_nest_end(fmsg); 893 + devlink_fmsg_pair_nest_end(fmsg); 887 894 } 888 895 EXPORT_SYMBOL_GPL(devlink_fmsg_u32_pair_put); 889 896 890 - int devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name, 891 - u64 value) 897 + void devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name, 898 + u64 value) 892 899 { 893 900 devlink_fmsg_pair_nest_start(fmsg, name); 894 901 devlink_fmsg_u64_put(fmsg, value); 895 - return devlink_fmsg_pair_nest_end(fmsg); 902 + devlink_fmsg_pair_nest_end(fmsg); 896 903 } 897 904 EXPORT_SYMBOL_GPL(devlink_fmsg_u64_pair_put); 898 905 899 - int devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name, 900 - const char *value) 906 + void devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name, 907 + const char *value) 901 908 { 902 909 devlink_fmsg_pair_nest_start(fmsg, name); 903 910 devlink_fmsg_string_put(fmsg, value); 904 - return devlink_fmsg_pair_nest_end(fmsg); 911 + devlink_fmsg_pair_nest_end(fmsg); 905 912 } 906 913 EXPORT_SYMBOL_GPL(devlink_fmsg_string_pair_put); 907 914 908 - int devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name, 909 - const void *value, u32 value_len) 915 + void devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name, 916 + const void *value, u32 value_len) 910 917 { 911 918 u32 data_size; 912 919 u32 offset; 913 - int err; 914 920 915 - err = devlink_fmsg_binary_pair_nest_start(fmsg, name); 916 - if (err) 917 - return err; 921 + devlink_fmsg_binary_pair_nest_start(fmsg, name); 918 922 919 923 for (offset = 0; offset < value_len; offset += data_size) { 920 924 data_size = value_len - offset; 921 925 if (data_size > DEVLINK_FMSG_MAX_SIZE) 922 926 data_size = DEVLINK_FMSG_MAX_SIZE; 923 - err = devlink_fmsg_binary_put(fmsg, value + offset, data_size); 924 - if (err) 925 - break; 926 - /* Exit from loop with a break (instead of 927 - * return) to make sure putting_binary is turned off 928 - */ 927 + 928 + devlink_fmsg_binary_put(fmsg, value + offset, data_size); 929 929 } 930 930 931 - err = devlink_fmsg_binary_pair_nest_end(fmsg); 931 + devlink_fmsg_binary_pair_nest_end(fmsg); 932 932 fmsg->putting_binary = false; 933 - 934 - return err; 935 933 } 936 934 EXPORT_SYMBOL_GPL(devlink_fmsg_binary_pair_put); 937 935 ··· 1029 1051 void *hdr; 1030 1052 int err; 1031 1053 1054 + if (fmsg->err) 1055 + return fmsg->err; 1056 + 1032 1057 while (!last) { 1033 1058 int tmp_index = index; 1034 1059 ··· 1085 1104 void *hdr; 1086 1105 int err; 1087 1106 1107 + if (fmsg->err) 1108 + return fmsg->err; 1109 + 1088 1110 hdr = genlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq, 1089 1111 &devlink_nl_family, NLM_F_ACK | NLM_F_MULTI, cmd); 1090 1112 if (!hdr) { ··· 1127 1143 if (!fmsg) 1128 1144 return -ENOMEM; 1129 1145 1130 - err = devlink_fmsg_obj_nest_start(fmsg); 1131 - if (err) 1132 - goto out; 1146 + devlink_fmsg_obj_nest_start(fmsg); 1133 1147 1134 1148 err = reporter->ops->diagnose(reporter, fmsg, info->extack); 1135 1149 if (err) 1136 1150 goto out; 1137 1151 1138 - err = devlink_fmsg_obj_nest_end(fmsg); 1139 - if (err) 1140 - goto out; 1152 + devlink_fmsg_obj_nest_end(fmsg); 1141 1153 1142 1154 err = devlink_fmsg_snd(fmsg, info, 1143 1155 DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE, 0);