diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 692c638826862d4c2ab837e07c80134a413fd166..026cde240c4a7926610fbb10583313be475478b7 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -1285,8 +1285,10 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info) } /* Avoid assigning overflow values */ - if (info->lo_offset > LLONG_MAX || info->lo_sizelimit > LLONG_MAX) - return -EOVERFLOW; + if (info->lo_offset > LLONG_MAX || info->lo_sizelimit > LLONG_MAX) { + err = -EOVERFLOW; + goto out_unfreeze; + } if (figure_loop_size(lo, info->lo_offset, info->lo_sizelimit)) { err = -EFBIG;