remoteproc: Harden rproc_handle_vdev() against integer overflow
The struct_size() macro protects against integer overflows but adding
"+ rsc->config_len" introduces the risk of integer overflows again.
Use size_add() to be safe.
Fixes: c878465715
("remoteproc: use struct_size() helper")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Reviewed-by: Mukesh Ojha <quic_mojha@quicinc.com>
Link: https://lore.kernel.org/r/YyMyoPoGOJUcEpZT@kili
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
This commit is contained in:
parent
fa25b94417
commit
7d7f8fe4e3
@ -520,12 +520,13 @@ static int rproc_handle_vdev(struct rproc *rproc, void *ptr,
|
||||
struct fw_rsc_vdev *rsc = ptr;
|
||||
struct device *dev = &rproc->dev;
|
||||
struct rproc_vdev *rvdev;
|
||||
size_t rsc_size;
|
||||
int i, ret;
|
||||
char name[16];
|
||||
|
||||
/* make sure resource isn't truncated */
|
||||
if (struct_size(rsc, vring, rsc->num_of_vrings) + rsc->config_len >
|
||||
avail) {
|
||||
rsc_size = struct_size(rsc, vring, rsc->num_of_vrings);
|
||||
if (size_add(rsc_size, rsc->config_len) > avail) {
|
||||
dev_err(dev, "vdev rsc is truncated\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user