mtd: rfd_ftl: use container_of() rather than cast
authorSean Young <sean@mess.org>
Sat, 7 Aug 2021 21:45:38 +0000 (22:45 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Tue, 17 Aug 2021 16:42:58 +0000 (18:42 +0200)
The container_of() is much more readable and also safer.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210807214538.14484-6-sean@mess.org
drivers/mtd/rfd_ftl.c

index 52be9f1..af20a0a 100644 (file)
@@ -239,7 +239,7 @@ err:
 
 static int rfd_ftl_readsect(struct mtd_blktrans_dev *dev, u_long sector, char *buf)
 {
-       struct partition *part = (struct partition*)dev;
+       struct partition *part = container_of(dev, struct partition, mbd);
        u_long addr;
        size_t retlen;
        int rc;
@@ -600,7 +600,7 @@ static int find_free_sector(const struct partition *part, const struct block *bl
 
 static int do_writesect(struct mtd_blktrans_dev *dev, u_long sector, char *buf, ulong *old_addr)
 {
-       struct partition *part = (struct partition*)dev;
+       struct partition *part = container_of(dev, struct partition, mbd);
        struct block *block;
        u_long addr;
        int i;
@@ -666,7 +666,7 @@ err:
 
 static int rfd_ftl_writesect(struct mtd_blktrans_dev *dev, u_long sector, char *buf)
 {
-       struct partition *part = (struct partition*)dev;
+       struct partition *part = container_of(dev, struct partition, mbd);
        u_long old_addr;
        int i;
        int rc = 0;
@@ -708,7 +708,7 @@ err:
 static int rfd_ftl_discardsect(struct mtd_blktrans_dev *dev,
                               unsigned long sector, unsigned int nr_sects)
 {
-       struct partition *part = (struct partition *)dev;
+       struct partition *part = container_of(dev, struct partition, mbd);
        u_long addr;
        int rc;
 
@@ -735,7 +735,7 @@ static int rfd_ftl_discardsect(struct mtd_blktrans_dev *dev,
 
 static int rfd_ftl_getgeo(struct mtd_blktrans_dev *dev, struct hd_geometry *geo)
 {
-       struct partition *part = (struct partition*)dev;
+       struct partition *part = container_of(dev, struct partition, mbd);
 
        geo->heads = 1;
        geo->sectors = SECTORS_PER_TRACK;
@@ -792,7 +792,7 @@ out:
 
 static void rfd_ftl_remove_dev(struct mtd_blktrans_dev *dev)
 {
-       struct partition *part = (struct partition*)dev;
+       struct partition *part = container_of(dev, struct partition, mbd);
        int i;
 
        for (i=0; i<part->total_blocks; i++) {
@@ -803,7 +803,7 @@ static void rfd_ftl_remove_dev(struct mtd_blktrans_dev *dev)
        vfree(part->sector_map);
        kfree(part->header_cache);
        kfree(part->blocks);
-       del_mtd_blktrans_dev(dev);
+       del_mtd_blktrans_dev(&part->mbd);
 }
 
 static struct mtd_blktrans_ops rfd_ftl_tr = {