Whamcloud - gitweb
LU-7623 lmv: Mark lmv_hsm_ct_register/unregister uarg as __user
[fs/lustre-release.git] / lustre / lmv / lmv_obd.c
index d276e34..78842b0 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2014, Intel Corporation.
+ * Copyright (c) 2011, 2015, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -683,7 +683,8 @@ out_local:
         RETURN(rc);
 }
 
-static int lmv_fid2path(struct obd_export *exp, int len, void *karg, void *uarg)
+static int lmv_fid2path(struct obd_export *exp, int len, void *karg,
+                       void __user *uarg)
 {
        struct obd_device       *obddev = class_exp2obd(exp);
        struct lmv_obd          *lmv = &obddev->u.lmv;
@@ -808,7 +809,8 @@ static void lmv_hsm_req_build(struct lmv_obd *lmv,
 }
 
 static int lmv_hsm_ct_unregister(struct lmv_obd *lmv, unsigned int cmd, int len,
-                                struct lustre_kernelcomm *lk, void *uarg)
+                                struct lustre_kernelcomm *lk,
+                                void __user *uarg)
 {
        __u32   i;
        int     rc;
@@ -835,7 +837,7 @@ static int lmv_hsm_ct_unregister(struct lmv_obd *lmv, unsigned int cmd, int len,
 }
 
 static int lmv_hsm_ct_register(struct lmv_obd *lmv, unsigned int cmd, int len,
-                              struct lustre_kernelcomm *lk, void *uarg)
+                              struct lustre_kernelcomm *lk, __user void *uarg)
 {
        struct file             *filp;
        __u32                    i, j;
@@ -905,7 +907,7 @@ static int lmv_hsm_ct_register(struct lmv_obd *lmv, unsigned int cmd, int len,
 
 
 static int lmv_iocontrol(unsigned int cmd, struct obd_export *exp,
-                         int len, void *karg, void *uarg)
+                        int len, void *karg, void __user *uarg)
 {
        struct obd_device       *obddev = class_exp2obd(exp);
        struct lmv_obd          *lmv = &obddev->u.lmv;
@@ -1742,26 +1744,27 @@ lmv_locate_mds(struct lmv_obd *lmv, struct md_op_data *op_data,
         * index if the file under striped dir is being restored, see
         * ct_restore(). */
        if (op_data->op_bias & MDS_CREATE_VOLATILE &&
-           (int)op_data->op_mds != -1 && lsm != NULL) {
+           (int)op_data->op_mds != -1) {
                int i;
                tgt = lmv_get_target(lmv, op_data->op_mds, NULL);
                if (IS_ERR(tgt))
                        return tgt;
 
-               /* refill the right parent fid */
-               for (i = 0; i < lsm->lsm_md_stripe_count; i++) {
-                       struct lmv_oinfo *oinfo;
+               if (lsm != NULL) {
+                       /* refill the right parent fid */
+                       for (i = 0; i < lsm->lsm_md_stripe_count; i++) {
+                               struct lmv_oinfo *oinfo;
 
-                       oinfo = &lsm->lsm_md_oinfo[i];
-                       if (oinfo->lmo_mds == op_data->op_mds) {
-                               *fid = oinfo->lmo_fid;
-                               break;
+                               oinfo = &lsm->lsm_md_oinfo[i];
+                               if (oinfo->lmo_mds == op_data->op_mds) {
+                                       *fid = oinfo->lmo_fid;
+                                       break;
+                               }
                        }
-               }
 
-               /* Hmm, can not find the stripe by mdt_index(op_mds) */
-               if (i == lsm->lsm_md_stripe_count)
-                       tgt = ERR_PTR(-EINVAL);
+                       if (i == lsm->lsm_md_stripe_count)
+                               *fid = lsm->lsm_md_oinfo[0].lmo_fid;
+               }
 
                return tgt;
        }
@@ -3397,19 +3400,20 @@ struct md_ops lmv_md_ops = {
        .m_unpackmd             = lmv_unpackmd,
 };
 
-int __init lmv_init(void)
+static int __init lmv_init(void)
 {
        return class_register_type(&lmv_obd_ops, &lmv_md_ops, true, NULL,
                                   LUSTRE_LMV_NAME, NULL);
 }
 
-static void lmv_exit(void)
+static void __exit lmv_exit(void)
 {
-        class_unregister_type(LUSTRE_LMV_NAME);
+       class_unregister_type(LUSTRE_LMV_NAME);
 }
 
 MODULE_AUTHOR("OpenSFS, Inc. <http://www.lustre.org/>");
-MODULE_DESCRIPTION("Lustre Logical Metadata Volume OBD driver");
+MODULE_DESCRIPTION("Lustre Logical Metadata Volume");
+MODULE_VERSION(LUSTRE_VERSION_STRING);
 MODULE_LICENSE("GPL");
 
 module_init(lmv_init);