On Mon, Jul 15, 2013 at 11:50:07AM +0200, Paul Bolle wrote: > 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? Looks okay to me. Dan do you want this to go thru my tree with you Ack of course...
~Vinod > > > 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/