On Mon, 2013-06-17 at 12:35 +0200, Paul Bolle wrote: > Building dma_v3.o triggers two GCC warnings: > drivers/dma/ioat/dma_v3.c: In function ‘__ioat3_prep_pq16_lock’: > drivers/dma/ioat/dma_v3.c:264:11: warning: array subscript is below array > bounds [-Warray-bounds] > drivers/dma/ioat/dma_v3.c:264:11: warning: array subscript is below array > bounds [-Warray-bounds] > > These warnings are caused by pq16_set_src(). It uses "int idx" as an > index to an eight element array. Changing "idx" to unsigned int silences > these warnings. Apparently GCC can then determine that "idx" will never > be negative. > > Signed-off-by: Paul Bolle <pebo...@tiscali.nl>
Identical warnings can still be seen in v3.11-rc1. Did anyone had a chance to look at this patch? Paul Bolle > --- > 0) Compile tested only. > > 1) These warning were introduced in v3.10-rc1. That must have been > through commit 7727eaa449 ("ioatdma: Adding support for 16 src PQ ops > and super extended descriptors"). > > drivers/dma/ioat/dma_v3.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c > index ca6ea9b..b5102da 100644 > --- a/drivers/dma/ioat/dma_v3.c > +++ b/drivers/dma/ioat/dma_v3.c > @@ -251,7 +251,7 @@ static bool is_bwd_noraid(struct pci_dev *pdev) > } > > static void pq16_set_src(struct ioat_raw_descriptor *desc[3], > - dma_addr_t addr, u32 offset, u8 coef, int idx) > + dma_addr_t addr, u32 offset, u8 coef, unsigned int idx) > { > struct ioat_pq_descriptor *pq = (struct ioat_pq_descriptor *)desc[0]; > struct ioat_pq16a_descriptor *pq16 = > @@ -1180,7 +1180,7 @@ __ioat3_prep_pq16_lock(struct dma_chan *c, enum > sum_check_flags *result, > struct ioat_pq_descriptor *pq; > u32 offset = 0; > u8 op; > - int i, s, idx, num_descs; > + int i, idx, num_descs; > > /* this function only handles src_cnt 9 - 16 */ > BUG_ON(src_cnt < 9); > @@ -1206,6 +1206,7 @@ __ioat3_prep_pq16_lock(struct dma_chan *c, enum > sum_check_flags *result, > do { > struct ioat_raw_descriptor *descs[4]; > size_t xfer_size = min_t(size_t, len, 1 << ioat->xfercap_log); > + unsigned int s; > > desc = ioat2_get_ring_ent(ioat, idx + i); > pq = desc->pq; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/