提交 f2633d2e 编写于 作者: D Dan Carpenter 提交者: David S. Miller

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: NDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 86f04396
...@@ -1128,7 +1128,7 @@ static int rx_pkt(struct atm_dev *dev) ...@@ -1128,7 +1128,7 @@ static int rx_pkt(struct atm_dev *dev)
/* make the ptr point to the corresponding buffer desc entry */ /* make the ptr point to the corresponding buffer desc entry */
buf_desc_ptr += desc; buf_desc_ptr += desc;
if (!desc || (desc > iadev->num_rx_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); free_desc(dev, desc);
IF_ERR(printk("IA: bad descriptor desc = %d \n", desc);) IF_ERR(printk("IA: bad descriptor desc = %d \n", desc);)
return -1; return -1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册