X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ffld%2Flproc_fld.c;h=e8230ceddaea81e125dd23e5330ef1ea5e497889;hp=bbbecb3fe93dda6d6be884dc0b8882aca70249bb;hb=7a814e94e065551ab79e2ba75df9626e4940efc5;hpb=f9920b4924edce1bd341622eee4281fdcd41845a diff --git a/lustre/fld/lproc_fld.c b/lustre/fld/lproc_fld.c index bbbecb3..e8230ce 100644 --- a/lustre/fld/lproc_fld.c +++ b/lustre/fld/lproc_fld.c @@ -15,11 +15,7 @@ * * You should have received a copy of the GNU General Public License * version 2 along with this program; If not, see - * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ @@ -27,7 +23,7 @@ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2012, 2014, Intel Corporation. + * Copyright (c) 2012, 2015, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -51,7 +47,7 @@ #include #include "fld_internal.h" -#ifdef LPROCFS +#ifdef CONFIG_PROC_FS static int fld_proc_targets_seq_show(struct seq_file *m, void *unused) { @@ -87,22 +83,29 @@ static ssize_t fld_proc_hash_seq_write(struct file *file, const char __user *buffer, size_t count, loff_t *off) { - struct lu_client_fld *fld = ((struct seq_file *)file->private_data)->private; - struct lu_fld_hash *hash = NULL; - int i; - ENTRY; + struct lu_client_fld *fld; + struct lu_fld_hash *hash = NULL; + char fh_name[8]; + int i; - LASSERT(fld != NULL); + if (count > sizeof(fh_name)) + return -ENAMETOOLONG; - for (i = 0; fld_hash[i].fh_name != NULL; i++) { - if (count != strlen(fld_hash[i].fh_name)) - continue; + if (copy_from_user(fh_name, buffer, count) != 0) + return -EFAULT; - if (!strncmp(fld_hash[i].fh_name, buffer, count)) { - hash = &fld_hash[i]; - break; - } - } + fld = ((struct seq_file *)file->private_data)->private; + LASSERT(fld != NULL); + + for (i = 0; fld_hash[i].fh_name != NULL; i++) { + if (count != strlen(fld_hash[i].fh_name)) + continue; + + if (!strncmp(fld_hash[i].fh_name, fh_name, count)) { + hash = &fld_hash[i]; + break; + } + } if (hash != NULL) { spin_lock(&fld->lcf_lock); @@ -113,7 +116,7 @@ fld_proc_hash_seq_write(struct file *file, const char __user *buffer, fld->lcf_name, hash->fh_name); } - RETURN(count); + return count; } static ssize_t @@ -136,7 +139,7 @@ LPROC_SEQ_FOPS_RO(fld_proc_targets); LPROC_SEQ_FOPS(fld_proc_hash); LPROC_SEQ_FOPS_WO_TYPE(fld, cache_flush); -struct lprocfs_seq_vars fld_client_proc_list[] = { +struct lprocfs_vars fld_client_proc_list[] = { { .name = "targets", .fops = &fld_proc_targets_fops }, { .name = "hash", @@ -256,7 +259,7 @@ static int fldb_seq_show(struct seq_file *p, void *v) fld->lsf_name, rc); } else if (fld_rec->lsr_start != 0) { range_be_to_cpu(fld_rec, fld_rec); - rc = seq_printf(p, DRANGE"\n", PRANGE(fld_rec)); + seq_printf(p, DRANGE"\n", PRANGE(fld_rec)); } return rc; @@ -304,7 +307,7 @@ static int fldb_seq_open(struct inode *inode, struct file *file) env_init = 1; iops = &obj->do_index_ops->dio_it; - param->fsp_it = iops->init(¶m->fsp_env, obj, 0, NULL); + param->fsp_it = iops->init(¶m->fsp_env, obj, 0); if (IS_ERR(param->fsp_it)) GOTO(out, rc = PTR_ERR(param->fsp_it)); @@ -359,10 +362,10 @@ const struct file_operations fld_proc_seq_fops = { .release = fldb_seq_release, }; -struct lprocfs_seq_vars fld_server_proc_list[] = { +struct lprocfs_vars fld_server_proc_list[] = { { NULL } }; # endif /* HAVE_SERVER_SUPPORT */ -#endif /* LPROCFS */ +#endif /* CONFIG_PROC_FS */