diff mbox series

md/raid1-10: shut up randstruct warning again

Message ID 20230616092532.3307719-1-arnd@kernel.org (mailing list archive)
State New, archived
Headers show
Series md/raid1-10: shut up randstruct warning again | expand

Commit Message

Arnd Bergmann June 16, 2023, 9:24 a.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

A code reorganization brought back a warning when structure randomization
is enabled:

drivers/md/raid1-10.c:119:25: error: casting from randomized structure pointer type 'struct block_device *' to 'struct md_rdev *'
        struct md_rdev *rdev = (struct md_rdev *)bio->bi_bdev;
                               ^

Before the rework, this used a (void*) cast, so go back to that in order
to avoid the warning. Casting between pointers to incompatible types is
clearly something that is dangerous, but this driver has always done so,
and it's not made any worse by the struct randomization in this case.

Fixes: 8295efbe68c08 ("md/raid1-10: factor out a helper to submit normal write")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/md/raid1-10.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Yu Kuai June 16, 2023, 9:30 a.m. UTC | #1
Hi,

在 2023/06/16 17:24, Arnd Bergmann 写道:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> A code reorganization brought back a warning when structure randomization
> is enabled:
> 
> drivers/md/raid1-10.c:119:25: error: casting from randomized structure pointer type 'struct block_device *' to 'struct md_rdev *'
>          struct md_rdev *rdev = (struct md_rdev *)bio->bi_bdev;
>                                 ^
> 
> Before the rework, this used a (void*) cast, so go back to that in order
> to avoid the warning. Casting between pointers to incompatible types is
> clearly something that is dangerous, but this driver has always done so,
> and it's not made any worse by the struct randomization in this case.
> 
> Fixes: 8295efbe68c08 ("md/raid1-10: factor out a helper to submit normal write")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Thanks for the patch, and this problem is already reported by kernel
test robot:

https://lore.kernel.org/oe-kbuild-all/202306142042.fmjfmTF8-lkp@intel.com/

And fixed patch is already applied:

https://lore.kernel.org/lkml/CAPhsuW6aSvCEa1khjjmDYGozUEs+Tx75RxfaE1+xL2Y1T6aN=Q@mail.gmail.com/T/

Thanks,
Kuai
> ---
>   drivers/md/raid1-10.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/md/raid1-10.c b/drivers/md/raid1-10.c
> index 169ebe296f2d0..3f22edec70e78 100644
> --- a/drivers/md/raid1-10.c
> +++ b/drivers/md/raid1-10.c
> @@ -116,7 +116,7 @@ static void md_bio_reset_resync_pages(struct bio *bio, struct resync_pages *rp,
>   
>   static inline void raid1_submit_write(struct bio *bio)
>   {
> -	struct md_rdev *rdev = (struct md_rdev *)bio->bi_bdev;
> +	struct md_rdev *rdev = (void *)bio->bi_bdev;
>   
>   	bio->bi_next = NULL;
>   	bio_set_dev(bio, rdev->bdev);
>
diff mbox series

Patch

diff --git a/drivers/md/raid1-10.c b/drivers/md/raid1-10.c
index 169ebe296f2d0..3f22edec70e78 100644
--- a/drivers/md/raid1-10.c
+++ b/drivers/md/raid1-10.c
@@ -116,7 +116,7 @@  static void md_bio_reset_resync_pages(struct bio *bio, struct resync_pages *rp,
 
 static inline void raid1_submit_write(struct bio *bio)
 {
-	struct md_rdev *rdev = (struct md_rdev *)bio->bi_bdev;
+	struct md_rdev *rdev = (void *)bio->bi_bdev;
 
 	bio->bi_next = NULL;
 	bio_set_dev(bio, rdev->bdev);