From: hejianet <jiakernel@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: Oleg Drokin <oleg.drokin@intel.com>,
Andreas Dilger <andreas.dilger@intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH] staging: lustre: Fix sparse warning on address-space
Date: Wed, 14 Jan 2015 11:50:02 +0800 [thread overview]
Message-ID: <54B5E76A.40309@gmail.com> (raw)
In-Reply-To: <1419857380-16496-1-git-send-email-hejianet@gmail.com>
Hi all
Ping again, any comments are welcome
Justin
On Mon, 29 Dec 2014 20:49:40 +0800 from hejianet@gmail.com wrote:
> This patch is to fix the below warnings generated by sparse:
> warning: incorrect type in argument 1 (different address spaces)
> expected void const volatile [noderef] <asn:1>*<noident>
> got int *<noident>
> Adding the macro "__user" can suppress the warnings, and aslo some lines
> are adjusted for 80 chars line limitation.
> Already checked by sparse "C=2"
>
> Signed-off-by: Jia He <hejianet@gmail.com>
> Cc: Oleg Drokin <oleg.drokin@intel.com>
> Cc: Andreas Dilger <andreas.dilger@intel.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
> .../staging/lustre/lustre/include/lprocfs_status.h | 18 ++++-----
> .../lustre/lustre/obdclass/lprocfs_status.c | 6 +--
> drivers/staging/lustre/lustre/osc/lproc_osc.c | 44 +++++++++++-----------
> drivers/staging/lustre/lustre/osc/osc_request.c | 6 +--
> .../staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c | 6 +--
> 5 files changed, 40 insertions(+), 40 deletions(-)
>
> diff --git a/drivers/staging/lustre/lustre/include/lprocfs_status.h b/drivers/staging/lustre/lustre/include/lprocfs_status.h
> index cfe503b..ed4932f 100644
> --- a/drivers/staging/lustre/lustre/include/lprocfs_status.h
> +++ b/drivers/staging/lustre/lustre/include/lprocfs_status.h
> @@ -631,13 +631,13 @@ extern int lprocfs_wr_timeouts(struct file *file, const char *buffer,
> unsigned long count, void *data);
> extern int lprocfs_wr_evict_client(struct file *file, const char *buffer,
> size_t count, loff_t *off);
> -extern int lprocfs_wr_ping(struct file *file, const char *buffer,
> +extern int lprocfs_wr_ping(struct file *file, const char __user *buffer,
> size_t count, loff_t *off);
> -extern int lprocfs_wr_import(struct file *file, const char *buffer,
> +extern int lprocfs_wr_import(struct file *file, const char __user *buffer,
> size_t count, loff_t *off);
> extern int lprocfs_rd_pinger_recov(struct seq_file *m, void *n);
> -extern int lprocfs_wr_pinger_recov(struct file *file, const char *buffer,
> - size_t count, loff_t *off);
> +extern int lprocfs_wr_pinger_recov(struct file *file,
> + const char __user *buffer, size_t count, loff_t *off);
>
> /* Statfs helpers */
> extern int lprocfs_rd_blksize(struct seq_file *m, void *data);
> @@ -650,9 +650,9 @@ extern int lprocfs_rd_filesfree(struct seq_file *m, void *data);
> extern int lprocfs_write_helper(const char __user *buffer, unsigned long count,
> int *val);
> extern int lprocfs_seq_read_frac_helper(struct seq_file *m, long val, int mult);
> -extern int lprocfs_write_u64_helper(const char *buffer, unsigned long count,
> - __u64 *val);
> -extern int lprocfs_write_frac_u64_helper(const char *buffer,
> +extern int lprocfs_write_u64_helper(const char __user *buffer,
> + unsigned long count, __u64 *val);
> +extern int lprocfs_write_frac_u64_helper(const char __user *buffer,
> unsigned long count,
> __u64 *val, int mult);
> extern char *lprocfs_find_named_value(const char *buffer, const char *name,
> @@ -716,7 +716,7 @@ static struct file_operations name##_fops = { \
> return lprocfs_rd_##type(m, m->private); \
> } \
> static ssize_t name##_##type##_seq_write(struct file *file, \
> - const char *buffer, size_t count, loff_t *off) \
> + const char __user *buffer, size_t count, loff_t *off) \
> { \
> struct seq_file *seq = file->private_data; \
> return lprocfs_wr_##type(file, buffer, \
> @@ -726,7 +726,7 @@ static struct file_operations name##_fops = { \
>
> #define LPROC_SEQ_FOPS_WR_ONLY(name, type) \
> static ssize_t name##_##type##_write(struct file *file, \
> - const char *buffer, size_t count, loff_t *off) \
> + const char __user *buffer, size_t count, loff_t *off) \
> { \
> return lprocfs_wr_##type(file, buffer, count, off); \
> } \
> diff --git a/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c b/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c
> index 3b7dfc3..9a84b52 100644
> --- a/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c
> +++ b/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c
> @@ -1849,15 +1849,15 @@ int lprocfs_seq_read_frac_helper(struct seq_file *m, long val, int mult)
> }
> EXPORT_SYMBOL(lprocfs_seq_read_frac_helper);
>
> -int lprocfs_write_u64_helper(const char *buffer, unsigned long count,
> +int lprocfs_write_u64_helper(const char __user *buffer, unsigned long count,
> __u64 *val)
> {
> return lprocfs_write_frac_u64_helper(buffer, count, val, 1);
> }
> EXPORT_SYMBOL(lprocfs_write_u64_helper);
>
> -int lprocfs_write_frac_u64_helper(const char *buffer, unsigned long count,
> - __u64 *val, int mult)
> +int lprocfs_write_frac_u64_helper(const char __user *buffer,
> + unsigned long count, __u64 *val, int mult)
> {
> char kernbuf[22], *end, *pbuf;
> __u64 whole, frac = 0, units;
> diff --git a/drivers/staging/lustre/lustre/osc/lproc_osc.c b/drivers/staging/lustre/lustre/osc/lproc_osc.c
> index 9f719bc..507592c 100644
> --- a/drivers/staging/lustre/lustre/osc/lproc_osc.c
> +++ b/drivers/staging/lustre/lustre/osc/lproc_osc.c
> @@ -53,8 +53,8 @@ static int osc_active_seq_show(struct seq_file *m, void *v)
> return rc;
> }
>
> -static ssize_t osc_active_seq_write(struct file *file, const char *buffer,
> - size_t count, loff_t *off)
> +static ssize_t osc_active_seq_write(struct file *file,
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *dev = ((struct seq_file *)file->private_data)->private;
> int val, rc;
> @@ -88,7 +88,7 @@ static int osc_max_rpcs_in_flight_seq_show(struct seq_file *m, void *v)
> }
>
> static ssize_t osc_max_rpcs_in_flight_seq_write(struct file *file,
> - const char *buffer, size_t count, loff_t *off)
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *dev = ((struct seq_file *)file->private_data)->private;
> struct client_obd *cli = &dev->u.cli;
> @@ -130,8 +130,8 @@ static int osc_max_dirty_mb_seq_show(struct seq_file *m, void *v)
> return lprocfs_seq_read_frac_helper(m, val, mult);
> }
>
> -static ssize_t osc_max_dirty_mb_seq_write(struct file *file, const char *buffer,
> - size_t count, loff_t *off)
> +static ssize_t osc_max_dirty_mb_seq_write(struct file *file,
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *dev = ((struct seq_file *)file->private_data)->private;
> struct client_obd *cli = &dev->u.cli;
> @@ -233,8 +233,8 @@ static int osc_cur_grant_bytes_seq_show(struct seq_file *m, void *v)
> return rc;
> }
>
> -static ssize_t osc_cur_grant_bytes_seq_write(struct file *file, const char *buffer,
> - size_t count, loff_t *off)
> +static ssize_t osc_cur_grant_bytes_seq_write(struct file *file,
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
> struct client_obd *cli = &obd->u.cli;
> @@ -290,7 +290,7 @@ static int osc_grant_shrink_interval_seq_show(struct seq_file *m, void *v)
> }
>
> static ssize_t osc_grant_shrink_interval_seq_write(struct file *file,
> - const char *buffer, size_t count, loff_t *off)
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
> int val, rc;
> @@ -322,8 +322,8 @@ static int osc_checksum_seq_show(struct seq_file *m, void *v)
> obd->u.cli.cl_checksum ? 1 : 0);
> }
>
> -static ssize_t osc_checksum_seq_write(struct file *file, const char *buffer,
> - size_t count, loff_t *off)
> +static ssize_t osc_checksum_seq_write(struct file *file,
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
> int val, rc;
> @@ -362,8 +362,8 @@ static int osc_checksum_type_seq_show(struct seq_file *m, void *v)
> return 0;
> }
>
> -static ssize_t osc_checksum_type_seq_write(struct file *file, const char *buffer,
> - size_t count, loff_t *off)
> +static ssize_t osc_checksum_type_seq_write(struct file *file,
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
> int i;
> @@ -401,8 +401,8 @@ static int osc_resend_count_seq_show(struct seq_file *m, void *v)
> return seq_printf(m, "%u\n", atomic_read(&obd->u.cli.cl_resends));
> }
>
> -static ssize_t osc_resend_count_seq_write(struct file *file, const char *buffer,
> - size_t count, loff_t *off)
> +static ssize_t osc_resend_count_seq_write(struct file *file,
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
> int val, rc;
> @@ -428,8 +428,8 @@ static int osc_contention_seconds_seq_show(struct seq_file *m, void *v)
> return seq_printf(m, "%u\n", od->od_contention_time);
> }
>
> -static ssize_t osc_contention_seconds_seq_write(struct file *file, const char *buffer,
> - size_t count, loff_t *off)
> +static ssize_t osc_contention_seconds_seq_write(struct file *file,
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
> struct osc_device *od = obd2osc_dev(obd);
> @@ -447,8 +447,8 @@ static int osc_lockless_truncate_seq_show(struct seq_file *m, void *v)
> return seq_printf(m, "%u\n", od->od_lockless_truncate);
> }
>
> -static ssize_t osc_lockless_truncate_seq_write(struct file *file, const char *buffer,
> - size_t count, loff_t *off)
> +static ssize_t osc_lockless_truncate_seq_write(struct file *file,
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
> struct osc_device *od = obd2osc_dev(obd);
> @@ -472,7 +472,7 @@ static int osc_obd_max_pages_per_rpc_seq_show(struct seq_file *m, void *v)
> }
>
> static ssize_t osc_obd_max_pages_per_rpc_seq_write(struct file *file,
> - const char *buffer, size_t count, loff_t *off)
> + const char __user *buffer, size_t count, loff_t *off)
> {
> struct obd_device *dev = ((struct seq_file *)file->private_data)->private;
> struct client_obd *cli = &dev->u.cli;
> @@ -664,8 +664,8 @@ static int osc_rpc_stats_seq_show(struct seq_file *seq, void *v)
> }
> #undef pct
>
> -static ssize_t osc_rpc_stats_seq_write(struct file *file, const char *buf,
> - size_t len, loff_t *off)
> +static ssize_t osc_rpc_stats_seq_write(struct file *file,
> + const char __user *buf, size_t len, loff_t *off)
> {
> struct seq_file *seq = file->private_data;
> struct obd_device *dev = seq->private;
> @@ -702,7 +702,7 @@ static int osc_stats_seq_show(struct seq_file *seq, void *v)
> return 0;
> }
>
> -static ssize_t osc_stats_seq_write(struct file *file, const char *buf,
> +static ssize_t osc_stats_seq_write(struct file *file, const char __user *buf,
> size_t len, loff_t *off)
> {
> struct seq_file *seq = file->private_data;
> diff --git a/drivers/staging/lustre/lustre/osc/osc_request.c b/drivers/staging/lustre/lustre/osc/osc_request.c
> index b9450b9..ca65d92 100644
> --- a/drivers/staging/lustre/lustre/osc/osc_request.c
> +++ b/drivers/staging/lustre/lustre/osc/osc_request.c
> @@ -2598,7 +2598,7 @@ static int osc_getstripe(struct lov_stripe_md *lsm, struct lov_user_md *lump)
> /* we only need the header part from user space to get lmm_magic and
> * lmm_stripe_count, (the header part is common to v1 and v3) */
> lum_size = sizeof(struct lov_user_md_v1);
> - if (copy_from_user(&lum, lump, lum_size))
> + if (copy_from_user(&lum, (void __user *)lump, lum_size))
> return -EFAULT;
>
> if ((lum.lmm_magic != LOV_USER_MAGIC_V1) &&
> @@ -2632,7 +2632,7 @@ static int osc_getstripe(struct lov_stripe_md *lsm, struct lov_user_md *lump)
> lumk->lmm_oi = lsm->lsm_oi;
> lumk->lmm_stripe_count = 1;
>
> - if (copy_to_user(lump, lumk, lum_size))
> + if (copy_to_user((void __user *)lump, lumk, lum_size))
> rc = -EFAULT;
>
> if (lumk != &lum)
> @@ -2691,7 +2691,7 @@ static int osc_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
>
> memcpy(data->ioc_inlbuf2, &obd->obd_uuid, sizeof(uuid));
>
> - err = copy_to_user((void *)uarg, buf, len);
> + err = copy_to_user((void __user *)uarg, buf, len);
> if (err)
> err = -EFAULT;
> obd_ioctl_freedata(buf, len);
> diff --git a/drivers/staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c b/drivers/staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c
> index 4011e00..0fb32e8 100644
> --- a/drivers/staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c
> +++ b/drivers/staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c
> @@ -1223,7 +1223,7 @@ EXPORT_SYMBOL(lprocfs_wr_evict_client);
>
> #undef BUFLEN
>
> -int lprocfs_wr_ping(struct file *file, const char *buffer,
> +int lprocfs_wr_ping(struct file *file, const char __user *buffer,
> size_t count, loff_t *off)
> {
> struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
> @@ -1251,7 +1251,7 @@ EXPORT_SYMBOL(lprocfs_wr_ping);
> * The connection UUID is a node's primary NID. For example,
> * "echo connection=192.168.0.1@tcp0::instance > .../import".
> */
> -int lprocfs_wr_import(struct file *file, const char *buffer,
> +int lprocfs_wr_import(struct file *file, const char __user *buffer,
> size_t count, loff_t *off)
> {
> struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
> @@ -1329,7 +1329,7 @@ int lprocfs_rd_pinger_recov(struct seq_file *m, void *n)
> }
> EXPORT_SYMBOL(lprocfs_rd_pinger_recov);
>
> -int lprocfs_wr_pinger_recov(struct file *file, const char *buffer,
> +int lprocfs_wr_pinger_recov(struct file *file, const char __user *buffer,
> size_t count, loff_t *off)
> {
> struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
next prev parent reply other threads:[~2015-01-14 3:50 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-29 12:49 [PATCH] staging: lustre: Fix sparse warning on address-space Jia He
2015-01-14 3:50 ` hejianet [this message]
2015-01-17 23:53 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54B5E76A.40309@gmail.com \
--to=jiakernel@gmail.com \
--cc=andreas.dilger@intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg.drokin@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.