lkml.org 
[lkml]   [2022]   [Jun]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subjectdrivers/thunderbolt/test.c:851 tb_test_path_not_bonded_lane0() error: potential null dereference 'path'. (tb_path_alloc returns null)
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 997952851843935024962b51fc36c61b3c2d1ed4
commit: 7aadf84333572fa011ada2dbf469295b84587739 thunderbolt: test: use NULL macros
date: 10 weeks ago
config: parisc-randconfig-m031-20220608 (https://download.01.org/0day-ci/archive/20220613/202206130649.daXawSPB-lkp@intel.com/config)
compiler: hppa-linux-gcc (GCC) 11.3.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

smatch warnings:
drivers/thunderbolt/test.c:851 tb_test_path_not_bonded_lane0() error: potential null dereference 'path'. (tb_path_alloc returns null)
drivers/thunderbolt/test.c:913 tb_test_path_not_bonded_lane1() error: potential null dereference 'path'. (tb_path_alloc returns null)
drivers/thunderbolt/test.c:993 tb_test_path_not_bonded_lane1_chain() error: potential null dereference 'path'. (tb_path_alloc returns null)
drivers/thunderbolt/test.c:1073 tb_test_path_not_bonded_lane1_chain_reverse() error: potential null dereference 'path'. (tb_path_alloc returns null)
drivers/thunderbolt/test.c:1165 tb_test_path_mixed_chain() error: potential null dereference 'path'. (tb_path_alloc returns null)
drivers/thunderbolt/test.c:1257 tb_test_path_mixed_chain_reverse() error: potential null dereference 'path'. (tb_path_alloc returns null)

vim +/path +851 drivers/thunderbolt/test.c

54509f5005cacc Mika Westerberg 2020-04-29 811
54509f5005cacc Mika Westerberg 2020-04-29 812 static void tb_test_path_not_bonded_lane0(struct kunit *test)
54509f5005cacc Mika Westerberg 2020-04-29 813 {
54509f5005cacc Mika Westerberg 2020-04-29 814 /*
54509f5005cacc Mika Westerberg 2020-04-29 815 * PCIe path from host to device using lane 0.
54509f5005cacc Mika Westerberg 2020-04-29 816 *
54509f5005cacc Mika Westerberg 2020-04-29 817 * [Host]
54509f5005cacc Mika Westerberg 2020-04-29 818 * 3 |: 4
54509f5005cacc Mika Westerberg 2020-04-29 819 * 1 |: 2
54509f5005cacc Mika Westerberg 2020-04-29 820 * [Device]
54509f5005cacc Mika Westerberg 2020-04-29 821 */
54509f5005cacc Mika Westerberg 2020-04-29 822 static const struct hop_expectation test_data[] = {
54509f5005cacc Mika Westerberg 2020-04-29 823 {
54509f5005cacc Mika Westerberg 2020-04-29 824 .route = 0x0,
54509f5005cacc Mika Westerberg 2020-04-29 825 .in_port = 9,
54509f5005cacc Mika Westerberg 2020-04-29 826 .in_type = TB_TYPE_PCIE_DOWN,
54509f5005cacc Mika Westerberg 2020-04-29 827 .out_port = 3,
54509f5005cacc Mika Westerberg 2020-04-29 828 .out_type = TB_TYPE_PORT,
54509f5005cacc Mika Westerberg 2020-04-29 829 },
54509f5005cacc Mika Westerberg 2020-04-29 830 {
54509f5005cacc Mika Westerberg 2020-04-29 831 .route = 0x3,
54509f5005cacc Mika Westerberg 2020-04-29 832 .in_port = 1,
54509f5005cacc Mika Westerberg 2020-04-29 833 .in_type = TB_TYPE_PORT,
54509f5005cacc Mika Westerberg 2020-04-29 834 .out_port = 9,
54509f5005cacc Mika Westerberg 2020-04-29 835 .out_type = TB_TYPE_PCIE_UP,
54509f5005cacc Mika Westerberg 2020-04-29 836 },
54509f5005cacc Mika Westerberg 2020-04-29 837 };
54509f5005cacc Mika Westerberg 2020-04-29 838 struct tb_switch *host, *dev;
54509f5005cacc Mika Westerberg 2020-04-29 839 struct tb_port *down, *up;
54509f5005cacc Mika Westerberg 2020-04-29 840 struct tb_path *path;
54509f5005cacc Mika Westerberg 2020-04-29 841 int i;
54509f5005cacc Mika Westerberg 2020-04-29 842
54509f5005cacc Mika Westerberg 2020-04-29 843 host = alloc_host(test);
54509f5005cacc Mika Westerberg 2020-04-29 844 dev = alloc_dev_default(test, host, 0x3, false);
54509f5005cacc Mika Westerberg 2020-04-29 845
54509f5005cacc Mika Westerberg 2020-04-29 846 down = &host->ports[9];
54509f5005cacc Mika Westerberg 2020-04-29 847 up = &dev->ports[9];
54509f5005cacc Mika Westerberg 2020-04-29 848
54509f5005cacc Mika Westerberg 2020-04-29 849 path = tb_path_alloc(NULL, down, 8, up, 8, 0, "PCIe Down");
7aadf84333572f Ricardo Ribalda 2022-02-11 850 KUNIT_ASSERT_NOT_NULL(test, path);
8f0877c26e4b69 David Gow 2021-05-13 @851 KUNIT_ASSERT_EQ(test, path->path_length, ARRAY_SIZE(test_data));
54509f5005cacc Mika Westerberg 2020-04-29 852 for (i = 0; i < ARRAY_SIZE(test_data); i++) {
54509f5005cacc Mika Westerberg 2020-04-29 853 const struct tb_port *in_port, *out_port;
54509f5005cacc Mika Westerberg 2020-04-29 854
54509f5005cacc Mika Westerberg 2020-04-29 855 in_port = path->hops[i].in_port;
54509f5005cacc Mika Westerberg 2020-04-29 856 out_port = path->hops[i].out_port;
54509f5005cacc Mika Westerberg 2020-04-29 857
54509f5005cacc Mika Westerberg 2020-04-29 858 KUNIT_EXPECT_EQ(test, tb_route(in_port->sw), test_data[i].route);
54509f5005cacc Mika Westerberg 2020-04-29 859 KUNIT_EXPECT_EQ(test, in_port->port, test_data[i].in_port);
824945a5b0ff82 David Gow 2021-06-24 860 KUNIT_EXPECT_EQ(test, (enum tb_port_type)in_port->config.type,
824945a5b0ff82 David Gow 2021-06-24 861 test_data[i].in_type);
54509f5005cacc Mika Westerberg 2020-04-29 862 KUNIT_EXPECT_EQ(test, tb_route(out_port->sw), test_data[i].route);
54509f5005cacc Mika Westerberg 2020-04-29 863 KUNIT_EXPECT_EQ(test, out_port->port, test_data[i].out_port);
824945a5b0ff82 David Gow 2021-06-24 864 KUNIT_EXPECT_EQ(test, (enum tb_port_type)out_port->config.type,
824945a5b0ff82 David Gow 2021-06-24 865 test_data[i].out_type);
54509f5005cacc Mika Westerberg 2020-04-29 866 }
54509f5005cacc Mika Westerberg 2020-04-29 867 tb_path_free(path);
54509f5005cacc Mika Westerberg 2020-04-29 868 }
54509f5005cacc Mika Westerberg 2020-04-29 869
54509f5005cacc Mika Westerberg 2020-04-29 870 static void tb_test_path_not_bonded_lane1(struct kunit *test)
54509f5005cacc Mika Westerberg 2020-04-29 871 {
54509f5005cacc Mika Westerberg 2020-04-29 872 /*
54509f5005cacc Mika Westerberg 2020-04-29 873 * DP Video path from host to device using lane 1. Paths like
54509f5005cacc Mika Westerberg 2020-04-29 874 * these are only used with Thunderbolt 1 devices where lane
54509f5005cacc Mika Westerberg 2020-04-29 875 * bonding is not possible. USB4 specifically does not allow
54509f5005cacc Mika Westerberg 2020-04-29 876 * paths like this (you either use lane 0 where lane 1 is
54509f5005cacc Mika Westerberg 2020-04-29 877 * disabled or both lanes are bonded).
54509f5005cacc Mika Westerberg 2020-04-29 878 *
54509f5005cacc Mika Westerberg 2020-04-29 879 * [Host]
54509f5005cacc Mika Westerberg 2020-04-29 880 * 1 :| 2
54509f5005cacc Mika Westerberg 2020-04-29 881 * 1 :| 2
54509f5005cacc Mika Westerberg 2020-04-29 882 * [Device]
54509f5005cacc Mika Westerberg 2020-04-29 883 */
54509f5005cacc Mika Westerberg 2020-04-29 884 static const struct hop_expectation test_data[] = {
54509f5005cacc Mika Westerberg 2020-04-29 885 {
54509f5005cacc Mika Westerberg 2020-04-29 886 .route = 0x0,
54509f5005cacc Mika Westerberg 2020-04-29 887 .in_port = 5,
54509f5005cacc Mika Westerberg 2020-04-29 888 .in_type = TB_TYPE_DP_HDMI_IN,
54509f5005cacc Mika Westerberg 2020-04-29 889 .out_port = 2,
54509f5005cacc Mika Westerberg 2020-04-29 890 .out_type = TB_TYPE_PORT,
54509f5005cacc Mika Westerberg 2020-04-29 891 },
54509f5005cacc Mika Westerberg 2020-04-29 892 {
54509f5005cacc Mika Westerberg 2020-04-29 893 .route = 0x1,
54509f5005cacc Mika Westerberg 2020-04-29 894 .in_port = 2,
54509f5005cacc Mika Westerberg 2020-04-29 895 .in_type = TB_TYPE_PORT,
54509f5005cacc Mika Westerberg 2020-04-29 896 .out_port = 13,
54509f5005cacc Mika Westerberg 2020-04-29 897 .out_type = TB_TYPE_DP_HDMI_OUT,
54509f5005cacc Mika Westerberg 2020-04-29 898 },
54509f5005cacc Mika Westerberg 2020-04-29 899 };
54509f5005cacc Mika Westerberg 2020-04-29 900 struct tb_switch *host, *dev;
54509f5005cacc Mika Westerberg 2020-04-29 901 struct tb_port *in, *out;
54509f5005cacc Mika Westerberg 2020-04-29 902 struct tb_path *path;
54509f5005cacc Mika Westerberg 2020-04-29 903 int i;
54509f5005cacc Mika Westerberg 2020-04-29 904
54509f5005cacc Mika Westerberg 2020-04-29 905 host = alloc_host(test);
54509f5005cacc Mika Westerberg 2020-04-29 906 dev = alloc_dev_default(test, host, 0x1, false);
54509f5005cacc Mika Westerberg 2020-04-29 907
54509f5005cacc Mika Westerberg 2020-04-29 908 in = &host->ports[5];
54509f5005cacc Mika Westerberg 2020-04-29 909 out = &dev->ports[13];
54509f5005cacc Mika Westerberg 2020-04-29 910
54509f5005cacc Mika Westerberg 2020-04-29 911 path = tb_path_alloc(NULL, in, 9, out, 9, 1, "Video");
7aadf84333572f Ricardo Ribalda 2022-02-11 912 KUNIT_ASSERT_NOT_NULL(test, path);
8f0877c26e4b69 David Gow 2021-05-13 @913 KUNIT_ASSERT_EQ(test, path->path_length, ARRAY_SIZE(test_data));
54509f5005cacc Mika Westerberg 2020-04-29 914 for (i = 0; i < ARRAY_SIZE(test_data); i++) {
54509f5005cacc Mika Westerberg 2020-04-29 915 const struct tb_port *in_port, *out_port;
54509f5005cacc Mika Westerberg 2020-04-29 916
54509f5005cacc Mika Westerberg 2020-04-29 917 in_port = path->hops[i].in_port;
54509f5005cacc Mika Westerberg 2020-04-29 918 out_port = path->hops[i].out_port;
54509f5005cacc Mika Westerberg 2020-04-29 919
54509f5005cacc Mika Westerberg 2020-04-29 920 KUNIT_EXPECT_EQ(test, tb_route(in_port->sw), test_data[i].route);
54509f5005cacc Mika Westerberg 2020-04-29 921 KUNIT_EXPECT_EQ(test, in_port->port, test_data[i].in_port);
824945a5b0ff82 David Gow 2021-06-24 922 KUNIT_EXPECT_EQ(test, (enum tb_port_type)in_port->config.type,
824945a5b0ff82 David Gow 2021-06-24 923 test_data[i].in_type);
54509f5005cacc Mika Westerberg 2020-04-29 924 KUNIT_EXPECT_EQ(test, tb_route(out_port->sw), test_data[i].route);
54509f5005cacc Mika Westerberg 2020-04-29 925 KUNIT_EXPECT_EQ(test, out_port->port, test_data[i].out_port);
824945a5b0ff82 David Gow 2021-06-24 926 KUNIT_EXPECT_EQ(test, (enum tb_port_type)out_port->config.type,
824945a5b0ff82 David Gow 2021-06-24 927 test_data[i].out_type);
54509f5005cacc Mika Westerberg 2020-04-29 928 }
54509f5005cacc Mika Westerberg 2020-04-29 929 tb_path_free(path);
54509f5005cacc Mika Westerberg 2020-04-29 930 }
54509f5005cacc Mika Westerberg 2020-04-29 931
54509f5005cacc Mika Westerberg 2020-04-29 932 static void tb_test_path_not_bonded_lane1_chain(struct kunit *test)
54509f5005cacc Mika Westerberg 2020-04-29 933 {
54509f5005cacc Mika Westerberg 2020-04-29 934 /*
54509f5005cacc Mika Westerberg 2020-04-29 935 * DP Video path from host to device 3 using lane 1.
54509f5005cacc Mika Westerberg 2020-04-29 936 *
54509f5005cacc Mika Westerberg 2020-04-29 937 * [Host]
54509f5005cacc Mika Westerberg 2020-04-29 938 * 1 :| 2
54509f5005cacc Mika Westerberg 2020-04-29 939 * 1 :| 2
54509f5005cacc Mika Westerberg 2020-04-29 940 * [Device #1]
54509f5005cacc Mika Westerberg 2020-04-29 941 * 7 :| 8
54509f5005cacc Mika Westerberg 2020-04-29 942 * 1 :| 2
54509f5005cacc Mika Westerberg 2020-04-29 943 * [Device #2]
54509f5005cacc Mika Westerberg 2020-04-29 944 * 5 :| 6
54509f5005cacc Mika Westerberg 2020-04-29 945 * 1 :| 2
54509f5005cacc Mika Westerberg 2020-04-29 946 * [Device #3]
54509f5005cacc Mika Westerberg 2020-04-29 947 */
54509f5005cacc Mika Westerberg 2020-04-29 948 static const struct hop_expectation test_data[] = {
54509f5005cacc Mika Westerberg 2020-04-29 949 {
54509f5005cacc Mika Westerberg 2020-04-29 950 .route = 0x0,
54509f5005cacc Mika Westerberg 2020-04-29 951 .in_port = 5,
54509f5005cacc Mika Westerberg 2020-04-29 952 .in_type = TB_TYPE_DP_HDMI_IN,
54509f5005cacc Mika Westerberg 2020-04-29 953 .out_port = 2,
54509f5005cacc Mika Westerberg 2020-04-29 954 .out_type = TB_TYPE_PORT,
54509f5005cacc Mika Westerberg 2020-04-29 955 },
54509f5005cacc Mika Westerberg 2020-04-29 956 {
54509f5005cacc Mika Westerberg 2020-04-29 957 .route = 0x1,
54509f5005cacc Mika Westerberg 2020-04-29 958 .in_port = 2,
54509f5005cacc Mika Westerberg 2020-04-29 959 .in_type = TB_TYPE_PORT,
54509f5005cacc Mika Westerberg 2020-04-29 960 .out_port = 8,
54509f5005cacc Mika Westerberg 2020-04-29 961 .out_type = TB_TYPE_PORT,
54509f5005cacc Mika Westerberg 2020-04-29 962 },
54509f5005cacc Mika Westerberg 2020-04-29 963 {
54509f5005cacc Mika Westerberg 2020-04-29 964 .route = 0x701,
54509f5005cacc Mika Westerberg 2020-04-29 965 .in_port = 2,
54509f5005cacc Mika Westerberg 2020-04-29 966 .in_type = TB_TYPE_PORT,
54509f5005cacc Mika Westerberg 2020-04-29 967 .out_port = 6,
54509f5005cacc Mika Westerberg 2020-04-29 968 .out_type = TB_TYPE_PORT,
54509f5005cacc Mika Westerberg 2020-04-29 969 },
54509f5005cacc Mika Westerberg 2020-04-29 970 {
54509f5005cacc Mika Westerberg 2020-04-29 971 .route = 0x50701,
54509f5005cacc Mika Westerberg 2020-04-29 972 .in_port = 2,
54509f5005cacc Mika Westerberg 2020-04-29 973 .in_type = TB_TYPE_PORT,
54509f5005cacc Mika Westerberg 2020-04-29 974 .out_port = 13,
54509f5005cacc Mika Westerberg 2020-04-29 975 .out_type = TB_TYPE_DP_HDMI_OUT,
54509f5005cacc Mika Westerberg 2020-04-29 976 },
54509f5005cacc Mika Westerberg 2020-04-29 977 };
54509f5005cacc Mika Westerberg 2020-04-29 978 struct tb_switch *host, *dev1, *dev2, *dev3;
54509f5005cacc Mika Westerberg 2020-04-29 979 struct tb_port *in, *out;
54509f5005cacc Mika Westerberg 2020-04-29 980 struct tb_path *path;
54509f5005cacc Mika Westerberg 2020-04-29 981 int i;
54509f5005cacc Mika Westerberg 2020-04-29 982
54509f5005cacc Mika Westerberg 2020-04-29 983 host = alloc_host(test);
54509f5005cacc Mika Westerberg 2020-04-29 984 dev1 = alloc_dev_default(test, host, 0x1, false);
54509f5005cacc Mika Westerberg 2020-04-29 985 dev2 = alloc_dev_default(test, dev1, 0x701, false);
54509f5005cacc Mika Westerberg 2020-04-29 986 dev3 = alloc_dev_default(test, dev2, 0x50701, false);
54509f5005cacc Mika Westerberg 2020-04-29 987
54509f5005cacc Mika Westerberg 2020-04-29 988 in = &host->ports[5];
54509f5005cacc Mika Westerberg 2020-04-29 989 out = &dev3->ports[13];
54509f5005cacc Mika Westerberg 2020-04-29 990
54509f5005cacc Mika Westerberg 2020-04-29 991 path = tb_path_alloc(NULL, in, 9, out, 9, 1, "Video");
7aadf84333572f Ricardo Ribalda 2022-02-11 992 KUNIT_ASSERT_NOT_NULL(test, path);
8f0877c26e4b69 David Gow 2021-05-13 @993 KUNIT_ASSERT_EQ(test, path->path_length, ARRAY_SIZE(test_data));
54509f5005cacc Mika Westerberg 2020-04-29 994 for (i = 0; i < ARRAY_SIZE(test_data); i++) {
54509f5005cacc Mika Westerberg 2020-04-29 995 const struct tb_port *in_port, *out_port;
54509f5005cacc Mika Westerberg 2020-04-29 996
54509f5005cacc Mika Westerberg 2020-04-29 997 in_port = path->hops[i].in_port;
54509f5005cacc Mika Westerberg 2020-04-29 998 out_port = path->hops[i].out_port;
54509f5005cacc Mika Westerberg 2020-04-29 999
54509f5005cacc Mika Westerberg 2020-04-29 1000 KUNIT_EXPECT_EQ(test, tb_route(in_port->sw), test_data[i].route);
54509f5005cacc Mika Westerberg 2020-04-29 1001 KUNIT_EXPECT_EQ(test, in_port->port, test_data[i].in_port);
824945a5b0ff82 David Gow 2021-06-24 1002 KUNIT_EXPECT_EQ(test, (enum tb_port_type)in_port->config.type,
824945a5b0ff82 David Gow 2021-06-24 1003 test_data[i].in_type);
54509f5005cacc Mika Westerberg 2020-04-29 1004 KUNIT_EXPECT_EQ(test, tb_route(out_port->sw), test_data[i].route);
54509f5005cacc Mika Westerberg 2020-04-29 1005 KUNIT_EXPECT_EQ(test, out_port->port, test_data[i].out_port);
824945a5b0ff82 David Gow 2021-06-24 1006 KUNIT_EXPECT_EQ(test, (enum tb_port_type)out_port->config.type,
824945a5b0ff82 David Gow 2021-06-24 1007 test_data[i].out_type);
54509f5005cacc Mika Westerberg 2020-04-29 1008 }
54509f5005cacc Mika Westerberg 2020-04-29 1009 tb_path_free(path);
54509f5005cacc Mika Westerberg 2020-04-29 1010 }
54509f5005cacc Mika Westerberg 2020-04-29 1011

:::::: The code at line 851 was first introduced by commit
:::::: 8f0877c26e4b695f824c5dbcc4b964ce238328aa thunderbolt: test: Remove some casts which are no longer required

:::::: TO: David Gow <davidgow@google.com>
:::::: CC: Shuah Khan <skhan@linuxfoundation.org>

--
0-DAY CI Kernel Test Service
https://01.org/lkp

\
 
 \ /
  Last update: 2022-06-13 00:51    [W:0.497 / U:0.268 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site