From 1a9e5b77552bf4002e11f474f41aa09ea02e1efa Mon Sep 17 00:00:00 2001 From: David Teigland Date: Wed, 13 Dec 2006 10:37:55 -0600 Subject: [PATCH] --- yaml --- r: 46271 b: refs/heads/master c: 9e971b715dcc3cd5f4383f2815aaa7e5853d1f7b h: refs/heads/master i: 46269: ba0a9d1631f0ad110861e1482ab996d9f6c0794f 46267: e08d0f98fbdedf09c2e6f99a40995753ef024254 46263: 71d53c860ede4c110dedf1dfd7a6f729f8c224fe 46255: c957c7fa68ebfe8eb02a4dfc75f1993bd0a9fdd3 46239: 5b9841f4081602140f6d5a96e3a5fb2c406fa7db 46207: f8b0fbcffa244228a2f85b4dd44dce944610ef2b v: v3 --- [refs] | 2 +- trunk/fs/dlm/rcom.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 57c8a1e049a8..863adbd3a94a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 38aa8b0c59c35d10d15ebf00ceee641f9ed7acba +refs/heads/master: 9e971b715dcc3cd5f4383f2815aaa7e5853d1f7b diff --git a/trunk/fs/dlm/rcom.c b/trunk/fs/dlm/rcom.c index 521ad9bb47b7..54fba9bd6740 100644 --- a/trunk/fs/dlm/rcom.c +++ b/trunk/fs/dlm/rcom.c @@ -82,8 +82,17 @@ static void make_config(struct dlm_ls *ls, struct rcom_config *rf) rf->rf_lsflags = ls->ls_exflags; } -static int check_config(struct dlm_ls *ls, struct rcom_config *rf, int nodeid) +static int check_config(struct dlm_ls *ls, struct dlm_rcom *rc, int nodeid) { + struct rcom_config *rf = (struct rcom_config *) rc->rc_buf; + + if ((rc->rc_header.h_version & 0xFFFF0000) != DLM_HEADER_MAJOR) { + log_error(ls, "version mismatch: %x nodeid %d: %x", + DLM_HEADER_MAJOR | DLM_HEADER_MINOR, nodeid, + rc->rc_header.h_version); + return -EINVAL; + } + if (rf->rf_lvblen != ls->ls_lvblen || rf->rf_lsflags != ls->ls_exflags) { log_error(ls, "config mismatch: %d,%x nodeid %d: %d,%x", @@ -145,8 +154,7 @@ int dlm_rcom_status(struct dlm_ls *ls, int nodeid) log_debug(ls, "remote node %d not ready", nodeid); rc->rc_result = 0; } else - error = check_config(ls, (struct rcom_config *) rc->rc_buf, - nodeid); + error = check_config(ls, rc, nodeid); /* the caller looks at rc_result for the remote recovery status */ out: return error;