Message ID | 20200513084521.461116-1-natechancellor@gmail.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Mike Snitzer |
Headers | show |
Series | dm zoned: Avoid 64-bit division error in dmz_fixup_devices | expand |
On 2020/05/14 14:07, Nathan Chancellor wrote: > When building arm32 allyesconfig: > > ld.lld: error: undefined symbol: __aeabi_uldivmod >>>> referenced by dm-zoned-target.c >>>> md/dm-zoned-target.o:(dmz_ctr) in archive drivers/built-in.a > > dmz_fixup_devices uses DIV_ROUND_UP with variables of type sector_t. As > such, it should be using DIV_ROUND_UP_SECTOR_T, which handles this > automatically. > > Fixes: 70978208ec91 ("dm zoned: metadata version 2") > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> > --- > drivers/md/dm-zoned-target.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/md/dm-zoned-target.c b/drivers/md/dm-zoned-target.c > index ea43f6892ced..9c4fd4b04878 100644 > --- a/drivers/md/dm-zoned-target.c > +++ b/drivers/md/dm-zoned-target.c > @@ -803,8 +803,9 @@ static int dmz_fixup_devices(struct dm_target *ti) > > if (reg_dev) { > reg_dev->zone_nr_sectors = zoned_dev->zone_nr_sectors; > - reg_dev->nr_zones = DIV_ROUND_UP(reg_dev->capacity, > - reg_dev->zone_nr_sectors); > + reg_dev->nr_zones = > + DIV_ROUND_UP_SECTOR_T(reg_dev->capacity, > + reg_dev->zone_nr_sectors);> zoned_dev->zone_offset = reg_dev->nr_zones; > } > return 0; > > base-commit: e098d7762d602be640c53565ceca342f81e55ad2 > Looks good. Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
diff --git a/drivers/md/dm-zoned-target.c b/drivers/md/dm-zoned-target.c index ea43f6892ced..9c4fd4b04878 100644 --- a/drivers/md/dm-zoned-target.c +++ b/drivers/md/dm-zoned-target.c @@ -803,8 +803,9 @@ static int dmz_fixup_devices(struct dm_target *ti) if (reg_dev) { reg_dev->zone_nr_sectors = zoned_dev->zone_nr_sectors; - reg_dev->nr_zones = DIV_ROUND_UP(reg_dev->capacity, - reg_dev->zone_nr_sectors); + reg_dev->nr_zones = + DIV_ROUND_UP_SECTOR_T(reg_dev->capacity, + reg_dev->zone_nr_sectors); zoned_dev->zone_offset = reg_dev->nr_zones; } return 0;