block: Improve bio_set_op_attrs() robustness
authorBart Van Assche <bart.vanassche@sandisk.com>
Wed, 14 Sep 2016 08:46:22 +0000 (10:46 +0200)
committerJens Axboe <axboe@fb.com>
Wed, 14 Sep 2016 14:48:29 +0000 (08:48 -0600)
commit3e1de31b9bf608c5b35e2d0d134eb87f2a9ba4ae
treeb06d27e90f22588d73d1b969dab7f26fc6e82319
parent4382e33ad374862eacf62003bb02c750391ada05
block: Improve bio_set_op_attrs() robustness

Since REQ_OP_BITS == 3 and __REQ_NR_BITS == 30 it is not that hard
to pass an op_flags argument to bio_set_op_attrs() that is larger
than the number of bits reserved for the op_flags argument. Complain
if this happens. Additionally, ensure that negative arguments trigger
a complaint (1 << ... is signed while 1U << ... is unsigned; adding
0U to an integer expression causes it to be promoted to an unsigned
type).

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Cc: Mike Christie <mchristi@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Damien Le Moal <damien.lemoal@hgst.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
include/linux/blk_types.h