Re: [PATCH-next v4] loop: loop_set_status_from_info() check before assignment

From: Chaitanya Kulkarni
Date: Tue Feb 21 2023 - 13:00:04 EST


On 2/21/2023 1:50 AM, Zhong Jinghua wrote:
> From: Zhong Jinghua <zhongjinghua@xxxxxxxxxx>
>
> In loop_set_status_from_info(), lo->lo_offset and lo->lo_sizelimit should
> be checked before reassignment, because if an overflow error occurs, the
> original correct value will be changed to the wrong value, and it will not
> be changed back.
>
> More, the original patch did not solve the problem, the value was set and
> ioctl returned an error, but the subsequent io used the value in the loop
> driver, which still caused an alarm:
>
> loop_handle_cmd
> do_req_filebacked
> loff_t pos = ((loff_t) blk_rq_pos(rq) << 9) + lo->lo_offset;
> lo_rw_aio
> cmd->iocb.ki_pos = pos
>
> Fixes: c490a0b5a4f3 ("loop: Check for overflow while configuring loop")
> Signed-off-by: Zhong Jinghua <zhongjinghua@xxxxxxxxxx>


Reviewed-by: Chaitanya Kulkarni <kch@xxxxxxxxxx>

-ck