staging: vme_user: added bound check to geoid

[ Upstream commit a8a8b54350 ]

The geoid is a module parameter that allows users to hardcode the slot number.
A bound check for geoid was added in the probe function because only values
between 0 and less than VME_MAX_SLOT are valid.

Signed-off-by: Riyan Dhiman <riyandhiman14@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/20240827125604.42771-2-riyandhiman14@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Riyan Dhiman 2024-08-27 18:26:05 +05:30 committed by Greg Kroah-Hartman
parent 5b53a7a6bd
commit a84ae28d71
2 changed files with 12 additions and 0 deletions

View File

@ -1064,6 +1064,12 @@ static int __init fake_init(void)
struct vme_slave_resource *slave_image;
struct vme_lm_resource *lm;
if (geoid < 0 || geoid >= VME_MAX_SLOTS) {
pr_err("VME geographical address must be between 0 and %d (exclusive), but got %d\n",
VME_MAX_SLOTS, geoid);
return -EINVAL;
}
/* We need a fake parent device */
vme_root = root_device_register("vme");
if (IS_ERR(vme_root))

View File

@ -2252,6 +2252,12 @@ static int tsi148_probe(struct pci_dev *pdev, const struct pci_device_id *id)
struct vme_dma_resource *dma_ctrlr;
struct vme_lm_resource *lm;
if (geoid < 0 || geoid >= VME_MAX_SLOTS) {
dev_err(&pdev->dev, "VME geographical address must be between 0 and %d (exclusive), but got %d\n",
VME_MAX_SLOTS, geoid);
return -EINVAL;
}
/* If we want to support more than one of each bridge, we need to
* dynamically generate this so we get one per device
*/