Orabug:
23521058
Commit
21d62f6 ("blk-mq: fix race between timeout and freeing request")
added the element "orig_rq" to struct blk_flush_queue. This broke kABI.
The existing blk_flush_queue structure has "holes" (padding) of 4 bytes
plus 29 bits. This is not enough space to contain orig_rq, which is 8
bytes long.
Currently, this data structure is only used by the block-device code.
It is unlikely that a third-party module (e.g., a device driver) would
use struct blk_flush_queue, and even if one did, it would most likely
be via a pointer.
This commit moves orig_rq to the end of the structure, so that the offsets
of the existing elements remain the same as before. It also wraps orig_rq
in "#ifndef __GENKSYMS__" to hide it from the kABI checker.
Signed-off-by: Dan Duval <dan.duval@oracle.com>
* flush_rq shares tag with this rq, both can't be active
* at the same time
*/
- struct request *orig_rq;
spinlock_t mq_flush_lock;
+#ifndef __GENKSYMS__
+ struct request *orig_rq;
+#endif
};
extern struct kmem_cache *blk_requestq_cachep;