[lkml]   [2015]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subjecti_uid_read()/i_uid_write() and friends

Is it intended that non-gpl file systems cannot use functions like i_uid_read() and i_uid_write() (introduced by Eric Biederman in 3.5 kernel)?

They resolve to the below (in include/linux/fs.h):

static inline uid_t i_uid_read(const struct inode *inode)
return from_kuid(&init_user_ns, inode->i_uid);

static inline void i_uid_write(struct inode *inode, uid_t uid)
inode->i_uid = make_kuid(&init_user_ns, uid);

And both from_kuid() and make_kuid() are EXPORT_SYMBOL() so they are fine but the problem is that init_user_ns is EXPORT_SYMBOL_GPL() and because i_uid_read() and i_uid_write() are static inline it causes them to be unusable from non-gpl kernel modules...

Same thing applies to i_gid_read() and i_gid_write().

These seem pretty fundamental calls that a non-gpl file system should be able to call, no?

Best regards,

Anton Altaparmakov <anton at> (replace at with @)
Lead in File System Development, Tuxera Inc.,
Linux NTFS maintainer

 \ /
  Last update: 2015-04-11 05:01    [W:0.038 / U:3.092 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site