diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2016-05-27 06:34:35 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-05-31 14:52:59 -0400 |
commit | f2633d2eaaab773ea8b29cea3785cf0f8a8872a5 (patch) | |
tree | 7e7a7e03f72c394181ba4feb1ad4752fc78ecef9 | |
parent | 86f04396ff6d36146ec335d429191a7c8e2209af (diff) |
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@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/atm/iphase.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c index 7d00f2994738..809dd1e02091 100644 --- a/drivers/atm/iphase.c +++ b/drivers/atm/iphase.c | |||
@@ -1128,7 +1128,7 @@ static int rx_pkt(struct atm_dev *dev) | |||
1128 | /* make the ptr point to the corresponding buffer desc entry */ | 1128 | /* make the ptr point to the corresponding buffer desc entry */ |
1129 | buf_desc_ptr += desc; | 1129 | buf_desc_ptr += desc; |
1130 | if (!desc || (desc > iadev->num_rx_desc) || | 1130 | if (!desc || (desc > iadev->num_rx_desc) || |
1131 | ((buf_desc_ptr->vc_index & 0xffff) > iadev->num_vc)) { | 1131 | ((buf_desc_ptr->vc_index & 0xffff) >= iadev->num_vc)) { |
1132 | free_desc(dev, desc); | 1132 | free_desc(dev, desc); |
1133 | IF_ERR(printk("IA: bad descriptor desc = %d \n", desc);) | 1133 | IF_ERR(printk("IA: bad descriptor desc = %d \n", desc);) |
1134 | return -1; | 1134 | return -1; |