hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/hwtracing/coresight/coresight-tmc-etr.c
....@@ -47,7 +47,8 @@
4747 };
4848
4949 /* Convert the perf index to an offset within the ETR buffer */
50
-#define PERF_IDX2OFF(idx, buf) ((idx) % ((buf)->nr_pages << PAGE_SHIFT))
50
+#define PERF_IDX2OFF(idx, buf) \
51
+ ((idx) % ((unsigned long)(buf)->nr_pages << PAGE_SHIFT))
5152
5253 /* Lower limit for ETR hardware buffer */
5354 #define TMC_ETR_PERF_MIN_BUF_SIZE SZ_1M
....@@ -944,7 +945,7 @@
944945
945946 len = tmc_etr_buf_get_data(etr_buf, offset,
946947 CORESIGHT_BARRIER_PKT_SIZE, &bufp);
947
- if (WARN_ON(len < CORESIGHT_BARRIER_PKT_SIZE))
948
+ if (WARN_ON(len < 0 || len < CORESIGHT_BARRIER_PKT_SIZE))
948949 return -EINVAL;
949950 coresight_insert_barrier_packet(bufp);
950951 return offset + CORESIGHT_BARRIER_PKT_SIZE;
....@@ -1250,7 +1251,7 @@
12501251 * than the size requested via sysfs.
12511252 */
12521253 if ((nr_pages << PAGE_SHIFT) > drvdata->size) {
1253
- etr_buf = tmc_alloc_etr_buf(drvdata, (nr_pages << PAGE_SHIFT),
1254
+ etr_buf = tmc_alloc_etr_buf(drvdata, ((ssize_t)nr_pages << PAGE_SHIFT),
12541255 0, node, NULL);
12551256 if (!IS_ERR(etr_buf))
12561257 goto done;