[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160527103435.GB3255@mwanda>
Date: Fri, 27 May 2016 13:34:35 +0300
From: Dan Carpenter <dan.carpenter@...cle.com>
To: Chas Williams <3chas3@...il.com>
Cc: linux-atm-general@...ts.sourceforge.net, netdev@...r.kernel.org,
kernel-janitors@...r.kernel.org
Subject: [patch] atm: iphase: off by one in rx_pkt()
The iadev->rx_open[] array holds "iadev->num_vc" pointers (this code
assumes that pointers are 32 bits). So the > here should be >= or else
we could end up reading a garbage pointer from one element beyond the
end of the array.
Signed-off-by: Dan Carpenter <dan.carpenter@...cle.com>
diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
index 7d00f29..f86e318 100644
--- a/drivers/atm/iphase.c
+++ b/drivers/atm/iphase.c
@@ -1128,7 +1128,7 @@ static int rx_pkt(struct atm_dev *dev)
/* make the ptr point to the corresponding buffer desc entry */
buf_desc_ptr += desc;
if (!desc || (desc > iadev->num_rx_desc) ||
- ((buf_desc_ptr->vc_index & 0xffff) > iadev->num_vc)) {
+ ((buf_desc_ptr->vc_index & 0xffff) >= iadev->num_vc)) {
free_desc(dev, desc);
IF_ERR(printk("IA: bad descriptor desc = %d \n", desc);)
return -1;
Powered by blists - more mailing lists