Fix the following macro parameter usage patterns in blk-mq.h for consistency, ensuring that operator precedence is respected: Added parentheses: - x->member is changed for (x)->member, - x.member is changed for (x).member, - flags >> BLK_MQ_F_ALLOC_POLICY_START_BIT is changed for (flags) >> BLK_MQ_F_ALLOC_POLICY_START_BIT. - "x = y" is changed for "x = (y)", because "y" can be an expression containing a comma if it is the result of the expansion of a macro such as #define eval(...) __VA_ARGS__, which would cause unexpected operator precedence. This use-case is far-fetched, but we have to choose one way or the other (with or without parentheses) for consistency. Removed parentheses: - m((x)) is changed for m(x) (the extra parentheses are useless), - m(x, (y), (z)) is changed for m(x, y, z), because comma is the lowest priority operator, and thus the extra parentheses are useless, - v[(x)] is changed for v[x], because the extra parentheses are useless given that [] already surrounds an expression, - "(i) = 0" is changed for "i = 0", because "i" is an lvalue, which makes the extra parentheses useless. Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Jens Axboe <axboe@xxxxxxxxx> Cc: linux-block@xxxxxxxxxxxxxxx --- include/linux/blk-mq.h | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 06caacd77ed6..4de6ad92530c 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h @@ -223,13 +223,13 @@ static inline unsigned short req_get_ioprio(struct request *req) #define rq_list_add(listptr, rq) do { \ (rq)->rq_next = *(listptr); \ - *(listptr) = rq; \ + *(listptr) = (rq); \ } while (0) #define rq_list_add_tail(lastpptr, rq) do { \ (rq)->rq_next = NULL; \ - **(lastpptr) = rq; \ - *(lastpptr) = &rq->rq_next; \ + **(lastpptr) = (rq); \ + *(lastpptr) = &(rq)->rq_next; \ } while (0) #define rq_list_pop(listptr) \ @@ -251,11 +251,11 @@ static inline unsigned short req_get_ioprio(struct request *req) }) #define rq_list_for_each(listptr, pos) \ - for (pos = rq_list_peek((listptr)); pos; pos = rq_list_next(pos)) + for (pos = rq_list_peek(listptr); pos; pos = rq_list_next(pos)) #define rq_list_for_each_safe(listptr, pos, nxt) \ - for (pos = rq_list_peek((listptr)), nxt = rq_list_next(pos); \ - pos; pos = nxt, nxt = pos ? rq_list_next(pos) : NULL) + for (pos = rq_list_peek(listptr), nxt = rq_list_next(pos); \ + pos; pos = (nxt), nxt = (pos) ? rq_list_next(pos) : NULL) #define rq_list_next(rq) (rq)->rq_next #define rq_list_empty(list) ((list) == (struct request *) NULL) @@ -692,10 +692,10 @@ enum { BLK_MQ_CPU_WORK_BATCH = 8, }; #define BLK_MQ_FLAG_TO_ALLOC_POLICY(flags) \ - ((flags >> BLK_MQ_F_ALLOC_POLICY_START_BIT) & \ + (((flags) >> BLK_MQ_F_ALLOC_POLICY_START_BIT) & \ ((1 << BLK_MQ_F_ALLOC_POLICY_BITS) - 1)) #define BLK_ALLOC_POLICY_TO_MQ_FLAG(policy) \ - ((policy & ((1 << BLK_MQ_F_ALLOC_POLICY_BITS) - 1)) \ + (((policy) & ((1 << BLK_MQ_F_ALLOC_POLICY_BITS) - 1)) \ << BLK_MQ_F_ALLOC_POLICY_START_BIT) #define BLK_MQ_NO_HCTX_IDX (-1U) @@ -948,11 +948,11 @@ static inline void *blk_mq_rq_to_pdu(struct request *rq) } #define queue_for_each_hw_ctx(q, hctx, i) \ - xa_for_each(&(q)->hctx_table, (i), (hctx)) + xa_for_each(&(q)->hctx_table, i, hctx) #define hctx_for_each_ctx(hctx, ctx, i) \ - for ((i) = 0; (i) < (hctx)->nr_ctx && \ - ({ ctx = (hctx)->ctxs[(i)]; 1; }); (i)++) + for (i = 0; (i) < (hctx)->nr_ctx && \ + ({ ctx = (hctx)->ctxs[i]; 1; }); (i)++) static inline void blk_mq_cleanup_rq(struct request *rq) { @@ -1013,20 +1013,20 @@ struct req_iterator { }; #define __rq_for_each_bio(_bio, rq) \ - if ((rq->bio)) \ - for (_bio = (rq)->bio; _bio; _bio = _bio->bi_next) + if ((rq)->bio) \ + for (_bio = (rq)->bio; _bio; _bio = (_bio)->bi_next) #define rq_for_each_segment(bvl, _rq, _iter) \ - __rq_for_each_bio(_iter.bio, _rq) \ - bio_for_each_segment(bvl, _iter.bio, _iter.iter) + __rq_for_each_bio((_iter).bio, _rq) \ + bio_for_each_segment(bvl, (_iter).bio, (_iter).iter) #define rq_for_each_bvec(bvl, _rq, _iter) \ - __rq_for_each_bio(_iter.bio, _rq) \ - bio_for_each_bvec(bvl, _iter.bio, _iter.iter) + __rq_for_each_bio((_iter).bio, _rq) \ + bio_for_each_bvec(bvl, (_iter).bio, (_iter).iter) #define rq_iter_last(bvec, _iter) \ - (_iter.bio->bi_next == NULL && \ - bio_iter_last(bvec, _iter.iter)) + ((_iter).bio->bi_next == NULL && \ + bio_iter_last(bvec, (_iter).iter)) /* * blk_rq_pos() : the current sector -- 2.25.1