Skip to contentSkip to conversation

staging: lustre: lprocfs_status.h: fix sparse error: symbol redeclared with different type

PATCH In review Samuele Baisi 2 participants 3 messages Oct 6, 2016 – Oct 7, 2016 Staging

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 staging: lustre: lprocfs_status.h: fix sparse error: symbol redeclared with different type

drivers/staging/lustre/lustre/obdclass/lprocfs_status.c:1554:5: error:
symbol 'lprocfs_wr_root_squash' redeclared with different type (originally declared at drivers/staging/lustre/lustre/obdclass/../include/lprocfs_status.h:704)
- incompatible argument 1 (different address spaces)

drivers/staging/lustre/lustre/obdclass/lprocfs_status.c:1618:5: error:
symbol 'lprocfs_wr_nosquash_nids' redeclared with different type (originally declared at drivers/staging/lustre/lustre/obdclass/../include/lprocfs_status.h:706)
- incompatible argument 1 (different address spaces)

Added __user annotation to the header definitions arguments (which are indeed userspace buffers).

---
 drivers/staging/lustre/lustre/include/lprocfs_status.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/staging/lustre/lustre/include/lprocfs_status.h +2 -2
index cc0713e..b5c24ca 100644
@@ -701,9 +701,9 @@ static struct lustre_attr lustre_attr_##name = __ATTR(name, mode, show, store)
 extern const struct sysfs_ops lustre_sysfs_ops;
 
 struct root_squash_info;
-int lprocfs_wr_root_squash(const char *buffer, unsigned long count,
+int lprocfs_wr_root_squash(const char __user *buffer, unsigned long count,
 			   struct root_squash_info *squash, char *name);
-int lprocfs_wr_nosquash_nids(const char *buffer, unsigned long count,
+int lprocfs_wr_nosquash_nids(const char __user *buffer, unsigned long count,
 			     struct root_squash_info *squash, char *name);
 
 /* all quota proc functions */
Signature · 1 line
2.9.3
maintainer
#1 lore raw
Quoted 5 lines · Samuele Baisi

drivers/staging/lustre/lustre/obdclass/lprocfs_status.c:1554:5: error:
symbol 'lprocfs_wr_root_squash' redeclared with different type (originally declared at drivers/staging/lustre/lustre/obdclass/../include/lprocfs_status.h:704)
- incompatible argument 1 (different address spaces)

Quoted 7 lines

drivers/staging/lustre/lustre/obdclass/lprocfs_status.c:1618:5: error:
symbol 'lprocfs_wr_nosquash_nids' redeclared with different type (originally declared at drivers/staging/lustre/lustre/obdclass/../include/lprocfs_status.h:706)
- incompatible argument 1 (different address spaces)

Added __user annotation to the header definitions arguments (which are indeed userspace buffers).

Are they really? Have you tested this? The last time this was looked at, it was a non-trivial problem...

And any reason you didn't cc the lustre maintainers with this change? If you think it is correct, please resend it with the testing information and cc: them.

thanks,

greg k-h

#2 lore raw

Il giorno ven 7 ott 2016 alle 5:55, Greg KH <[email protected]> ha scritto:

Quoted 17 lines · Samuele Baisi
Quoted 16 lines

drivers/staging/lustre/lustre/obdclass/lprocfs_status.c:1554:5:
error:
symbol 'lprocfs_wr_root_squash' redeclared with different type
(originally
declared at
drivers/staging/lustre/lustre/obdclass/../include/lprocfs_status.h:704)
- incompatible argument 1 (different address spaces)

drivers/staging/lustre/lustre/obdclass/lprocfs_status.c:1618:5:
error:
symbol 'lprocfs_wr_nosquash_nids' redeclared with different type
(originally
declared at
drivers/staging/lustre/lustre/obdclass/../include/lprocfs_status.h:706)
- incompatible argument 1 (different address spaces)

Quoted 6 lines
Quoted 3 lines

Added __user annotation to the header definitions arguments (which
are
indeed userspace buffers).

Are they really? Have you tested this? The last time this was looked at, it was a non-trivial problem...

No, I haven't really tested it, I just saw they're treated like userspace buffers (copy_from_user) in the function body.

if (copy_from_user(kernbuf, buffer, count)) {
errmsg = "bad address";
rc = -EFAULT;
goto failed_noprint;
}

if (copy_from_user(kernbuf, buffer, count)) {
errmsg = "bad address";
rc = -EFAULT;
goto failed;
}

Quoted 3 lines

And any reason you didn't cc the lustre maintainers with this change? If you think it is correct, please resend it with the testing information and cc: them.

No, it was a mistake on my part, I thought to CC lustre-devel, but it seems not to be public access and then I forgot to add a Lustre mantainer.

Anyway, I do not think I'm going to have a chanche to really test it, so it's probably better to dismiss the matter.

Sorry for having wasted your time.

Quoted 4 lines

thanks,

greg k-h

Thank you and best regards.