tree:
https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-5.4
head: 7fd7be5eec16d4ccd80534ee0ac446d947e5651a
commit: 331b74951ecc80a07a2eee8b8b68b4c5512276f0 [13/15] FROMLIST: drm/bridge: anx7625:
Fix edid_read break case in sp_tx_edid_read()
config: i386-randconfig-m021-20211117 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
smatch warnings:
drivers/gpu/drm/bridge/analogix/anx7625.c:1055 sp_tx_edid_read() warn: impossible
condition '(g_edid_break < 0) => (0-255 < 0)'
vim +1055 drivers/gpu/drm/bridge/analogix/anx7625.c
23d8ba8ff5d368 Xin Ji 2020-09-18 1017 static int sp_tx_edid_read(struct
anx7625_data *ctx,
23d8ba8ff5d368 Xin Ji 2020-09-18 1018 u8 *pedid_blocks_buf)
23d8ba8ff5d368 Xin Ji 2020-09-18 1019 {
23d8ba8ff5d368 Xin Ji 2020-09-18 1020 u8 offset, edid_pos;
23d8ba8ff5d368 Xin Ji 2020-09-18 1021 int count, blocks_num;
23d8ba8ff5d368 Xin Ji 2020-09-18 1022 u8
pblock_buf[MAX_DPCD_BUFFER_SIZE];
23d8ba8ff5d368 Xin Ji 2020-09-18 1023 u8 i, j;
23d8ba8ff5d368 Xin Ji 2020-09-18 1024 u8 g_edid_break = 0;
^^^^^^^^^^^^^^^
23d8ba8ff5d368 Xin Ji 2020-09-18 1025 int ret;
23d8ba8ff5d368 Xin Ji 2020-09-18 1026 struct device *dev =
&ctx->client->dev;
23d8ba8ff5d368 Xin Ji 2020-09-18 1027
23d8ba8ff5d368 Xin Ji 2020-09-18 1028 /* Address initial */
23d8ba8ff5d368 Xin Ji 2020-09-18 1029 ret = anx7625_reg_write(ctx,
ctx->i2c.rx_p0_client,
23d8ba8ff5d368 Xin Ji 2020-09-18 1030 AP_AUX_ADDR_7_0, 0x50);
23d8ba8ff5d368 Xin Ji 2020-09-18 1031 ret |= anx7625_reg_write(ctx,
ctx->i2c.rx_p0_client,
23d8ba8ff5d368 Xin Ji 2020-09-18 1032 AP_AUX_ADDR_15_8, 0);
23d8ba8ff5d368 Xin Ji 2020-09-18 1033 ret |= anx7625_write_and(ctx,
ctx->i2c.rx_p0_client,
23d8ba8ff5d368 Xin Ji 2020-09-18 1034 AP_AUX_ADDR_19_16, 0xf0);
23d8ba8ff5d368 Xin Ji 2020-09-18 1035 if (ret < 0) {
23d8ba8ff5d368 Xin Ji 2020-09-18 1036 DRM_DEV_ERROR(dev, "access aux
channel IO error.\n");
23d8ba8ff5d368 Xin Ji 2020-09-18 1037 return -EIO;
23d8ba8ff5d368 Xin Ji 2020-09-18 1038 }
23d8ba8ff5d368 Xin Ji 2020-09-18 1039
23d8ba8ff5d368 Xin Ji 2020-09-18 1040 blocks_num =
sp_tx_get_edid_block(ctx);
23d8ba8ff5d368 Xin Ji 2020-09-18 1041 if (blocks_num < 0)
23d8ba8ff5d368 Xin Ji 2020-09-18 1042 return blocks_num;
23d8ba8ff5d368 Xin Ji 2020-09-18 1043
23d8ba8ff5d368 Xin Ji 2020-09-18 1044 count = 0;
23d8ba8ff5d368 Xin Ji 2020-09-18 1045
23d8ba8ff5d368 Xin Ji 2020-09-18 1046 do {
23d8ba8ff5d368 Xin Ji 2020-09-18 1047 switch (count) {
23d8ba8ff5d368 Xin Ji 2020-09-18 1048 case 0:
23d8ba8ff5d368 Xin Ji 2020-09-18 1049 case 1:
23d8ba8ff5d368 Xin Ji 2020-09-18 1050 for (i = 0; i < 8; i++) {
23d8ba8ff5d368 Xin Ji 2020-09-18 1051 offset = (i + count * 8) *
MAX_DPCD_BUFFER_SIZE;
23d8ba8ff5d368 Xin Ji 2020-09-18 1052 g_edid_break = edid_read(ctx,
offset,
23d8ba8ff5d368 Xin Ji 2020-09-18 1053 pblock_buf);
23d8ba8ff5d368 Xin Ji 2020-09-18 1054
331b74951ecc80 Hsin-Yi Wang 2021-11-12 @1055 if (g_edid_break < 0)
^^^^^^^^^^^^^^^^
u8 can't be negative.
23d8ba8ff5d368 Xin Ji 2020-09-18 1056 break;
23d8ba8ff5d368 Xin Ji 2020-09-18 1057
23d8ba8ff5d368 Xin Ji 2020-09-18 1058
memcpy(&pedid_blocks_buf[offset],
23d8ba8ff5d368 Xin Ji 2020-09-18 1059 pblock_buf,
23d8ba8ff5d368 Xin Ji 2020-09-18 1060 MAX_DPCD_BUFFER_SIZE);
23d8ba8ff5d368 Xin Ji 2020-09-18 1061 }
23d8ba8ff5d368 Xin Ji 2020-09-18 1062
23d8ba8ff5d368 Xin Ji 2020-09-18 1063 break;
23d8ba8ff5d368 Xin Ji 2020-09-18 1064 case 2:
23d8ba8ff5d368 Xin Ji 2020-09-18 1065 offset = 0x00;
23d8ba8ff5d368 Xin Ji 2020-09-18 1066
23d8ba8ff5d368 Xin Ji 2020-09-18 1067 for (j = 0; j < 8; j++) {
23d8ba8ff5d368 Xin Ji 2020-09-18 1068 edid_pos = (j + count * 8) *
23d8ba8ff5d368 Xin Ji 2020-09-18 1069 MAX_DPCD_BUFFER_SIZE;
23d8ba8ff5d368 Xin Ji 2020-09-18 1070
23d8ba8ff5d368 Xin Ji 2020-09-18 1071 if (g_edid_break == 1)
23d8ba8ff5d368 Xin Ji 2020-09-18 1072 break;
23d8ba8ff5d368 Xin Ji 2020-09-18 1073
23d8ba8ff5d368 Xin Ji 2020-09-18 1074 segments_edid_read(ctx, count /
2,
23d8ba8ff5d368 Xin Ji 2020-09-18 1075 pblock_buf, offset);
23d8ba8ff5d368 Xin Ji 2020-09-18 1076
memcpy(&pedid_blocks_buf[edid_pos],
23d8ba8ff5d368 Xin Ji 2020-09-18 1077 pblock_buf,
23d8ba8ff5d368 Xin Ji 2020-09-18 1078 MAX_DPCD_BUFFER_SIZE);
23d8ba8ff5d368 Xin Ji 2020-09-18 1079 offset = offset + 0x10;
23d8ba8ff5d368 Xin Ji 2020-09-18 1080 }
23d8ba8ff5d368 Xin Ji 2020-09-18 1081
23d8ba8ff5d368 Xin Ji 2020-09-18 1082 break;
23d8ba8ff5d368 Xin Ji 2020-09-18 1083 case 3:
23d8ba8ff5d368 Xin Ji 2020-09-18 1084 offset = 0x80;
23d8ba8ff5d368 Xin Ji 2020-09-18 1085
23d8ba8ff5d368 Xin Ji 2020-09-18 1086 for (j = 0; j < 8; j++) {
23d8ba8ff5d368 Xin Ji 2020-09-18 1087 edid_pos = (j + count * 8) *
23d8ba8ff5d368 Xin Ji 2020-09-18 1088 MAX_DPCD_BUFFER_SIZE;
23d8ba8ff5d368 Xin Ji 2020-09-18 1089 if (g_edid_break == 1)
23d8ba8ff5d368 Xin Ji 2020-09-18 1090 break;
23d8ba8ff5d368 Xin Ji 2020-09-18 1091
23d8ba8ff5d368 Xin Ji 2020-09-18 1092 segments_edid_read(ctx, count /
2,
23d8ba8ff5d368 Xin Ji 2020-09-18 1093 pblock_buf, offset);
23d8ba8ff5d368 Xin Ji 2020-09-18 1094
memcpy(&pedid_blocks_buf[edid_pos],
23d8ba8ff5d368 Xin Ji 2020-09-18 1095 pblock_buf,
23d8ba8ff5d368 Xin Ji 2020-09-18 1096 MAX_DPCD_BUFFER_SIZE);
23d8ba8ff5d368 Xin Ji 2020-09-18 1097 offset = offset + 0x10;
23d8ba8ff5d368 Xin Ji 2020-09-18 1098 }
23d8ba8ff5d368 Xin Ji 2020-09-18 1099
23d8ba8ff5d368 Xin Ji 2020-09-18 1100 break;
23d8ba8ff5d368 Xin Ji 2020-09-18 1101 default:
23d8ba8ff5d368 Xin Ji 2020-09-18 1102 break;
23d8ba8ff5d368 Xin Ji 2020-09-18 1103 }
23d8ba8ff5d368 Xin Ji 2020-09-18 1104
23d8ba8ff5d368 Xin Ji 2020-09-18 1105 count++;
23d8ba8ff5d368 Xin Ji 2020-09-18 1106
23d8ba8ff5d368 Xin Ji 2020-09-18 1107 } while (blocks_num >= count);
23d8ba8ff5d368 Xin Ji 2020-09-18 1108
23d8ba8ff5d368 Xin Ji 2020-09-18 1109 /* Check edid data */
23d8ba8ff5d368 Xin Ji 2020-09-18 1110 if (!drm_edid_is_valid((struct edid
*)pedid_blocks_buf)) {
23d8ba8ff5d368 Xin Ji 2020-09-18 1111 DRM_DEV_ERROR(dev, "WARNING!
edid check fail!\n");
23d8ba8ff5d368 Xin Ji 2020-09-18 1112 return -EINVAL;
23d8ba8ff5d368 Xin Ji 2020-09-18 1113 }
23d8ba8ff5d368 Xin Ji 2020-09-18 1114
23d8ba8ff5d368 Xin Ji 2020-09-18 1115 /* Reset aux channel */
c078b992821d86 Linux Patches Robot 2021-11-05 1116 ret = sp_tx_rst_aux(ctx);
c078b992821d86 Linux Patches Robot 2021-11-05 1117 if (ret < 0) {
c078b992821d86 Linux Patches Robot 2021-11-05 1118 DRM_DEV_ERROR(dev, "Failed to
reset aux channel!\n");
c078b992821d86 Linux Patches Robot 2021-11-05 1119 return ret;
c078b992821d86 Linux Patches Robot 2021-11-05 1120 }
23d8ba8ff5d368 Xin Ji 2020-09-18 1121
23d8ba8ff5d368 Xin Ji 2020-09-18 1122 return (blocks_num + 1);
23d8ba8ff5d368 Xin Ji 2020-09-18 1123 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org