diff mbox

[1/2] switchtec: off by one in ioctl_event_ctl()

Message ID 20170313105004.GA24989@mwanda
State Accepted
Headers show

Commit Message

Dan Carpenter March 13, 2017, 10:50 a.m. UTC
The > should be >= SWITCHTEC_IOCTL_MAX_EVENTS.  Otherwise we probably
read one space beyond the end of the loop, hit a sanity check and return
-EINVAL.  This bug doesn't look super serious.

Fixes: 61c2e02154a9 ("switchtec: Add IOCTLs to the Switchtec driver")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Comments

Logan Gunthorpe March 13, 2017, 4:38 p.m. UTC | #1
Hi Dan,

Thanks for catching these!

Reviewed-by: Logan Gunthorpe <logang@deltatee.com>

(for both patches)

Logan

On 13/03/17 04:50 AM, Dan Carpenter wrote:
> The > should be >= SWITCHTEC_IOCTL_MAX_EVENTS.  Otherwise we probably
> read one space beyond the end of the loop, hit a sanity check and return
> -EINVAL.  This bug doesn't look super serious.
> 
> Fixes: 61c2e02154a9 ("switchtec: Add IOCTLs to the Switchtec driver")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c
> index 1f045c95dec6..82ae08956457 100644
> --- a/drivers/pci/switch/switchtec.c
> +++ b/drivers/pci/switch/switchtec.c
> @@ -1049,7 +1049,7 @@ static int ioctl_event_ctl(struct switchtec_dev *stdev,
>  	if (copy_from_user(&ctl, uctl, sizeof(ctl)))
>  		return -EFAULT;
>  
> -	if (ctl.event_id > SWITCHTEC_IOCTL_MAX_EVENTS)
> +	if (ctl.event_id >= SWITCHTEC_IOCTL_MAX_EVENTS)
>  		return -EINVAL;
>  
>  	if (ctl.flags & SWITCHTEC_IOCTL_EVENT_FLAG_UNUSED)
>
Bjorn Helgaas March 16, 2017, 7:30 p.m. UTC | #2
On Mon, Mar 13, 2017 at 01:50:04PM +0300, Dan Carpenter wrote:
> The > should be >= SWITCHTEC_IOCTL_MAX_EVENTS.  Otherwise we probably
> read one space beyond the end of the loop, hit a sanity check and return
> -EINVAL.  This bug doesn't look super serious.
> 
> Fixes: 61c2e02154a9 ("switchtec: Add IOCTLs to the Switchtec driver")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Since these patches are on my "next" branch but haven't been merged
anywhere else, I folded both patches into the initial commits and added a
changelog note to credit Dan.

> diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c
> index 1f045c95dec6..82ae08956457 100644
> --- a/drivers/pci/switch/switchtec.c
> +++ b/drivers/pci/switch/switchtec.c
> @@ -1049,7 +1049,7 @@ static int ioctl_event_ctl(struct switchtec_dev *stdev,
>  	if (copy_from_user(&ctl, uctl, sizeof(ctl)))
>  		return -EFAULT;
>  
> -	if (ctl.event_id > SWITCHTEC_IOCTL_MAX_EVENTS)
> +	if (ctl.event_id >= SWITCHTEC_IOCTL_MAX_EVENTS)
>  		return -EINVAL;
>  
>  	if (ctl.flags & SWITCHTEC_IOCTL_EVENT_FLAG_UNUSED)
diff mbox

Patch

diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c
index 1f045c95dec6..82ae08956457 100644
--- a/drivers/pci/switch/switchtec.c
+++ b/drivers/pci/switch/switchtec.c
@@ -1049,7 +1049,7 @@  static int ioctl_event_ctl(struct switchtec_dev *stdev,
 	if (copy_from_user(&ctl, uctl, sizeof(ctl)))
 		return -EFAULT;
 
-	if (ctl.event_id > SWITCHTEC_IOCTL_MAX_EVENTS)
+	if (ctl.event_id >= SWITCHTEC_IOCTL_MAX_EVENTS)
 		return -EINVAL;
 
 	if (ctl.flags & SWITCHTEC_IOCTL_EVENT_FLAG_UNUSED)