Hello Christian Gromm,
The patch 57562a72414c: "Staging: most: add MOST driver's core
module" from Jul 24, 2015, leads to the following static checker
warning:
drivers/staging/most/mostcore/core.c:1277 arm_mbo_chain()
warn: integer overflows 'coherent_buf_size'
drivers/staging/most/mostcore/core.c
1258 int arm_mbo_chain(struct most_c_obj *c, int dir, void (*compl)(struct
mbo *))
1259 {
1260 unsigned int i;
1261 int retval;
1262 struct mbo *mbo;
1263 u16 coherent_buf_size = c->cfg.buffer_size + c->cfg.extra_len;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
We could have an integer overflow here.
1264
1265 atomic_set(&c->mbo_nq_level, 0);
1266
1267 for (i = 0; i < c->cfg.num_buffers; i++) {
1268 mbo = kzalloc(sizeof(*mbo), GFP_KERNEL);
1269 if (!mbo) {
1270 pr_info("WARN: Allocation of MBO failed.\n");
1271 retval = i;
1272 goto _exit;
1273 }
1274 mbo->context = c;
1275 mbo->ifp = c->iface;
1276 mbo->hdm_channel_id = c->channel_id;
1277 mbo->virt_address = dma_alloc_coherent(NULL,
1278
coherent_buf_size,
^^^^^^^^^^^^^^^^^
Leading to a smaller than expect size here. I assume this is root
only but the USHRT_MAX is quite small so I could imagine someone hitting
this limit by mistake.
1279
&mbo->bus_address,
1280 GFP_KERNEL);
1281 if (!mbo->virt_address) {
1282 pr_info("WARN: No DMA coherent buffer.\n");
1283 retval = i;
1284 goto _error1;
1285 }
regards,
dan carpenter
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel