[Patch] bsg: initialize request and reply payloads in bsg_prepare_job

From: 라종휘

Date: Thu Feb 05 2026 - 00:32:33 EST


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 <jonghwi.rha@xxxxxxxxxxx>

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,