В ядре Linux устранена следующая уязвимость:
nvmet-fcloop: проверьте удаленный порт port_state перед вызовом обратного вызова Done. В nvme_fc_handle_ls_rqst_work обратный вызов lsrsp->done устанавливается только тогда, когда
Remoteport->port_state — это FC_OBJSTATE_ONLINE. В противном случае
Ожидается, что вызов LLDD nvme_fc_xmt_ls_rsp к lport->ops->xmt_ls_rsp
потерпит неудачу, и сам транспортный уровень nvme-fc напрямую вызовет
nvme_fc_xmt_ls_rsp_free вместо того, чтобы полагаться на обратный вызов LLDD для освобождения
ресурсы lsrsp.
Обновите процедуру fcloop_t2h_xmt_ls_rsp, чтобы проверить удаленный порт->port_state. Если он подключен, обратный вызов lsrsp->done освободит lsrsp. В противном случае верните
-ENODEV, чтобы сигнализировать транспорту nvme-fc об освобождении lsrsp.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: nvmet-fcloop: Check remoteport port_state before calling done callback In nvme_fc_handle_ls_rqst_work, the lsrsp->done callback is only set when remoteport->port_state is FC_OBJSTATE_ONLINE. Otherwise, the nvme_fc_xmt_ls_rsp's LLDD call to lport->ops->xmt_ls_rsp is expected to fail and the nvme-fc transport layer itself will directly call nvme_fc_xmt_ls_rsp_free instead of relying on LLDD's done callback to free the lsrsp resources. Update the fcloop_t2h_xmt_ls_rsp routine to check remoteport->port_state. If online, then lsrsp->done callback will free the lsrsp. Else, return -ENODEV to signal the nvme-fc transport to handle freeing lsrsp.