Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1224500
| From | green@linuxhacker.ru |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 04/19] staging/lustre/llite: strengthen checks for hsm flags and archive id |
| Date | 2015-09-15 00:50 +0200 |
| Message-ID | <q8KJs-36x-13@gated-at.bofh.it> (permalink) |
| References | <q8KJs-36x-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Bruno Faccini <bruno.faccini@intel.com> Prior to this patch undefined flags bits and out of range archive id can be set. Signed-off-by: Bruno Faccini <bruno.faccini@intel.com> Reviewed-on: http://review.whamcloud.com/13337 Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5757 Reviewed-by: frank zago <fzago@cray.com> Reviewed-by: Henri Doreau <henri.doreau@cea.fr> Signed-off-by: Oleg Drokin <oleg.drokin@intel.com> --- drivers/staging/lustre/lustre/include/lustre/lustre_idl.h | 7 +++++++ drivers/staging/lustre/lustre/llite/file.c | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h b/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h index e79af19..9416d95 100644 --- a/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h +++ b/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h @@ -365,6 +365,13 @@ static inline __u64 fid_ver_oid(const struct lu_fid *fid) return ((__u64)fid_ver(fid) << 32 | fid_oid(fid)); } +/* copytool uses a 32b bitmask field to encode archive-Ids during register + * with MDT thru kuc. + * archive num = 0 => all + * archive num from 1 to 32 + */ +#define LL_HSM_MAX_ARCHIVE (sizeof(__u32) * 8) + /** * Note that reserved SEQ numbers below 12 will conflict with ldiskfs * inodes in the IGIF namespace, so these reserved SEQ numbers can be diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c index e332326..b610032 100644 --- a/drivers/staging/lustre/lustre/llite/file.c +++ b/drivers/staging/lustre/lustre/llite/file.c @@ -2118,12 +2118,21 @@ static int ll_hsm_state_set(struct inode *inode, struct hsm_state_set *hss) struct md_op_data *op_data; int rc; + /* Detect out-of range masks */ + if ((hss->hss_setmask | hss->hss_clearmask) & ~HSM_FLAGS_MASK) + return -EINVAL; + /* Non-root users are forbidden to set or clear flags which are * NOT defined in HSM_USER_MASK. */ if (((hss->hss_setmask | hss->hss_clearmask) & ~HSM_USER_MASK) && !capable(CFS_CAP_SYS_ADMIN)) return -EPERM; + /* Detect out-of range archive id */ + if ((hss->hss_valid & HSS_ARCHIVE_ID) && + (hss->hss_archive_id > LL_HSM_MAX_ARCHIVE)) + return -EINVAL; + op_data = ll_prep_md_op_data(NULL, inode, NULL, NULL, 0, 0, LUSTRE_OPC_ANY, hss); if (IS_ERR(op_data)) -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next | Find similar | Unroll thread
[PATCH 04/19] staging/lustre/llite: strengthen checks for hsm flags and archive id green@linuxhacker.ru - 2015-09-15 00:50 +0200
csiph-web