Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-6485 libcfs: embed kr_data into kkuc_reg
[fs/lustre-release.git]
/
lustre
/
obdclass
/
kernelcomm.c
diff --git
a/lustre/obdclass/kernelcomm.c
b/lustre/obdclass/kernelcomm.c
index
f9763f1
..
f178ebc
100644
(file)
--- a/
lustre/obdclass/kernelcomm.c
+++ b/
lustre/obdclass/kernelcomm.c
@@
-102,7
+102,7
@@
struct kkuc_reg {
struct list_head kr_chain;
int kr_uid;
struct file *kr_fp;
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] = {};
};
static struct list_head kkuc_groups[KUC_GRP_MAX+1] = {};
@@
-115,7
+115,8
@@
static DECLARE_RWSEM(kg_sem);
* @param group group number
* @param data user data
*/
* @param group group number
* @param data user data
*/
-int libcfs_kkuc_group_add(struct file *filp, int uid, int group, void *data)
+int libcfs_kkuc_group_add(struct file *filp, int uid, int group,
+ void *data, size_t data_len)
{
struct kkuc_reg *reg;
{
struct kkuc_reg *reg;
@@
-129,13
+130,13
@@
int libcfs_kkuc_group_add(struct file *filp, int uid, int group, void *data)
return -EBADF;
/* freed in group_rem */
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;
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)
down_write(&kg_sem);
if (kkuc_groups[group].next == NULL)
@@
-149,7
+150,7
@@
int libcfs_kkuc_group_add(struct file *filp, int uid, int group, void *data)
}
EXPORT_SYMBOL(libcfs_kkuc_group_add);
}
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;
ENTRY;
{
struct kkuc_reg *reg, *next;
ENTRY;
@@
-176,8
+177,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);
reg->kr_uid, reg->kr_fp, group);
if (reg->kr_fp != NULL)
fput(reg->kr_fp);
- if (pdata != NULL)
- *pdata = reg->kr_data;
kfree(reg);
}
}
kfree(reg);
}
}