mirror of
https://github.com/torvalds/linux.git
synced 2024-11-19 10:31:48 +00:00
lustre: Correct KUC code max changelog msg size
The kernel to userspace communication routines (KUC) allocate and limit the maximum cs_buf size to CR_MAXSIZE. However this fails to account for the fact that the buffer is assumed to begin with a struct kuc_hdr. To allocate and account for that space, we introduce a new define, KUC_CHANGELOG_MSG_MAXSIZE. Signed-off-by: Christopher J. Morrone <morrone2@llnl.gov> Reviewed-on: http://review.whamcloud.com/7406 Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3587 Reviewed-by: Andreas Dilger <andreas.dilger@intel.com> Reviewed-by: jacques-Charles Lafoucriere <jacques-charles.lafoucriere@cea.fr> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
910827f174
commit
18e042f0c9
@ -61,6 +61,8 @@ struct kuc_hdr {
|
||||
__u16 kuc_msglen; /* Including header */
|
||||
} __attribute__((aligned(sizeof(__u64))));
|
||||
|
||||
#define KUC_CHANGELOG_MSG_MAXSIZE (sizeof(struct kuc_hdr)+CR_MAXSIZE)
|
||||
|
||||
#define KUC_MAGIC 0x191C /*Lustre9etLinC */
|
||||
#define KUC_FL_BLOCK 0x01 /* Wait for send */
|
||||
|
||||
|
@ -1430,7 +1430,7 @@ static struct kuc_hdr *changelog_kuc_hdr(char *buf, int len, int flags)
|
||||
{
|
||||
struct kuc_hdr *lh = (struct kuc_hdr *)buf;
|
||||
|
||||
LASSERT(len <= CR_MAXSIZE);
|
||||
LASSERT(len <= KUC_CHANGELOG_MSG_MAXSIZE);
|
||||
|
||||
lh->kuc_magic = KUC_MAGIC;
|
||||
lh->kuc_transport = KUC_TRANSPORT_CHANGELOG;
|
||||
@ -1503,7 +1503,7 @@ static int mdc_changelog_send_thread(void *csdata)
|
||||
CDEBUG(D_CHANGELOG, "changelog to fp=%p start "LPU64"\n",
|
||||
cs->cs_fp, cs->cs_startrec);
|
||||
|
||||
OBD_ALLOC(cs->cs_buf, CR_MAXSIZE);
|
||||
OBD_ALLOC(cs->cs_buf, KUC_CHANGELOG_MSG_MAXSIZE);
|
||||
if (cs->cs_buf == NULL)
|
||||
GOTO(out, rc = -ENOMEM);
|
||||
|
||||
@ -1540,7 +1540,7 @@ out:
|
||||
if (ctxt)
|
||||
llog_ctxt_put(ctxt);
|
||||
if (cs->cs_buf)
|
||||
OBD_FREE(cs->cs_buf, CR_MAXSIZE);
|
||||
OBD_FREE(cs->cs_buf, KUC_CHANGELOG_MSG_MAXSIZE);
|
||||
OBD_FREE_PTR(cs);
|
||||
return rc;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user