Hello, This is Jonghwi from Samsung. :) I am sending you a patch via new email as requested. bsg: initialize request and reply payloads in bsg_prepare_job struct bsg_job payloads contain fields that are only populated by certain commands, such as sg_list pointers. Because struct bsg_job is allocated with kmalloc(), memory may be reused across requests. If a command does not populate all payload fields, stale state from a previous job may remain and later be misinterpreted during cleanup, potentially leading to use-after-free or double-free issues. Initialize both request and reply payloads at the beginning of job preparation to ensure a clean state for all commands. Signed-off-by: Jonghwi Rha diff --git a/block/bsg-lib.c b/block/bsg-lib.c index 32da4a4429ce..0fbf8e311c03 100644 --- a/block/bsg-lib.c +++ b/block/bsg-lib.c @@ -234,6 +234,12 @@ static bool bsg_prepare_job(struct device *dev, struct request *req) struct bsg_job *job = blk_mq_rq_to_pdu(req); int ret; + /* Clear stale SG state since bsg_job is reused as a request PDU */ + job->request_payload.sg_list = NULL; + job->request_payload.sg_cnt = 0; + job->reply_payload.sg_list = NULL; + job->reply_payload.sg_cnt = 0; + job->timeout = req->timeout; if (req->bio) { BRs, Jonghwi,