Hi Dan, On 08/21/2015 01:47 AM, Dan Carpenter wrote: > My static checker assumes that if we are getting numbers as a string > using kstrotoint() then that means they come from outside the kernel and > are untrustworthy. > > This may or may not be true in this case, but it seems harmless to add > a range check here. > > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > > diff --git a/drivers/crypto/qat/qat_common/adf_transport.c b/drivers/crypto/qat/qat_common/adf_transport.c > index d5d8198..ec3abf9 100644 > --- a/drivers/crypto/qat/qat_common/adf_transport.c > +++ b/drivers/crypto/qat/qat_common/adf_transport.c > @@ -264,6 +264,10 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section, > dev_err(&GET_DEV(accel_dev), "Can't get ring number\n"); > return -EFAULT; > } > + if (ring_num >= ARRAY_SIZE(bank->rings)) { > + dev_err(&GET_DEV(accel_dev), "Invalid ring number\n"); > + return -EFAULT; > + } > > bank = &transport_data->banks[bank_num]; > if (adf_reserve_ring(bank, ring_num)) { > ACK, although I would use the ADF_ETR_MAX_RINGS_PER_BANK define. So if you don't mind. Thanks! ---8<--- Add range check for ring number. Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Signed-off-by: Tadeusz Struk <tadeusz.struk@xxxxxxxxx> diff --git a/drivers/crypto/qat/qat_common/adf_transport.c b/drivers/crypto/qat/qat_common/adf_transport.c index d5d8198..3865ae8 100644 --- a/drivers/crypto/qat/qat_common/adf_transport.c +++ b/drivers/crypto/qat/qat_common/adf_transport.c @@ -264,6 +264,10 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section, dev_err(&GET_DEV(accel_dev), "Can't get ring number\n"); return -EFAULT; } + if (ring_num >= ADF_ETR_MAX_RINGS_PER_BANK) { + dev_err(&GET_DEV(accel_dev), "Invalid ring number\n"); + return -EFAULT; + } bank = &transport_data->banks[bank_num]; if (adf_reserve_ring(bank, ring_num)) { -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html