summaryrefslogtreecommitdiff
path: root/drivers/staging/lustre/lustre/obdclass
diff options
context:
space:
mode:
authorHongchao Zhang <hongchao.zhang@intel.com>2015-12-23 16:24:44 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-02-03 14:20:14 -0800
commit17328956b0a232c2b50e8e20a078542242759047 (patch)
tree1c5805b781d24d5e7768f5e1584d5a87cf788813 /drivers/staging/lustre/lustre/obdclass
parente2780478fe011f80ef9d872e3b6941f946dcb6b2 (diff)
staging: lustre: embed kr_data into kkuc_reg
In struct kkuc_reg, the "kr_data" is difficult to be freed outside of libcfs, then it's better to change it to be inline data instead of the data pointer. Signed-off-by: Hongchao Zhang <hongchao.zhang@intel.com> Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6485 Reviewed-on: http://review.whamcloud.com/14638 Reviewed-by: John L. Hammond <john.hammond@intel.com> Reviewed-by: James Simmons <uja.ornl@yahoo.com> Reviewed-by: frank zago <fzago@cray.com> Reviewed-by: Robert Read <robert.read@intel.com> Reviewed-by: Henri Doreau <henri.doreau@cea.fr> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/lustre/lustre/obdclass')
-rw-r--r--drivers/staging/lustre/lustre/obdclass/kernelcomm.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/staging/lustre/lustre/obdclass/kernelcomm.c b/drivers/staging/lustre/lustre/obdclass/kernelcomm.c
index e3f5a3c40331..e29024655286 100644
--- a/drivers/staging/lustre/lustre/obdclass/kernelcomm.c
+++ b/drivers/staging/lustre/lustre/obdclass/kernelcomm.c
@@ -97,7 +97,7 @@ struct kkuc_reg {
struct list_head kr_chain;
int kr_uid;
struct file *kr_fp;
- void *kr_data;
+ char kr_data[0];
};
static struct list_head kkuc_groups[KUC_GRP_MAX+1] = {};
@@ -111,7 +111,7 @@ static DECLARE_RWSEM(kg_sem);
* @param data user data
*/
int libcfs_kkuc_group_add(struct file *filp, int uid, unsigned int group,
- void *data)
+ void *data, size_t data_len)
{
struct kkuc_reg *reg;
@@ -125,13 +125,13 @@ int libcfs_kkuc_group_add(struct file *filp, int uid, unsigned int group,
return -EBADF;
/* freed in group_rem */
- reg = kmalloc(sizeof(*reg), 0);
+ reg = kmalloc(sizeof(*reg) + data_len, 0);
if (reg == NULL)
return -ENOMEM;
reg->kr_fp = filp;
reg->kr_uid = uid;
- reg->kr_data = data;
+ memcpy(reg->kr_data, data, data_len);
down_write(&kg_sem);
if (kkuc_groups[group].next == NULL)
@@ -145,7 +145,7 @@ int libcfs_kkuc_group_add(struct file *filp, int uid, unsigned int group,
}
EXPORT_SYMBOL(libcfs_kkuc_group_add);
-int libcfs_kkuc_group_rem(int uid, int group, void **pdata)
+int libcfs_kkuc_group_rem(int uid, int group)
{
struct kkuc_reg *reg, *next;
@@ -171,8 +171,6 @@ int libcfs_kkuc_group_rem(int uid, int group, void **pdata)
reg->kr_uid, reg->kr_fp, group);
if (reg->kr_fp != NULL)
fput(reg->kr_fp);
- if (pdata)
- *pdata = reg->kr_data;
kfree(reg);
}
}