Commit 7175e131ebba ("fs: dlm: fix invalid derefence of sb_lvbptr")
fixes an issue when the lkb->lkb_lvbptr set to an dangled pointer and an
followed memcpy() would fail. It was fixed by an additional check of
DLM_LKF_VALBLK flag. The mentioned commit forgot to add an additional check
if DLM_LKF_VALBLK is set for the additional amount of LVB data allocated
in a dlm message. This patch is changing the message allocation to check
additionally if DLM_LKF_VALBLK is set otherwise a dangled lkb->lkb_lvbptr
pointer would allocated zero LVB message data which not gets filled with
actual data.

This patch is however only a cleanup to reduce the amount of zero bytes
transmitted over network as receive_lvb() will only evaluates message LVB
data if DLM_LKF_VALBLK is set.

Signed-off-by: Alexander Aring <aahri...@redhat.com>
---
 fs/dlm/lock.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/dlm/lock.c b/fs/dlm/lock.c
index 1582c8b1404c..debf8a55ad7d 100644
--- a/fs/dlm/lock.c
+++ b/fs/dlm/lock.c
@@ -3381,7 +3381,7 @@ static int create_message(struct dlm_rsb *r, struct 
dlm_lkb *lkb,
        case DLM_MSG_REQUEST_REPLY:
        case DLM_MSG_CONVERT_REPLY:
        case DLM_MSG_GRANT:
-               if (lkb && lkb->lkb_lvbptr)
+               if (lkb && lkb->lkb_lvbptr && (lkb->lkb_exflags & 
DLM_LKF_VALBLK))
                        mb_len += r->res_ls->ls_lvblen;
                break;
        }
-- 
2.31.1

Reply via email to