git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
fs
/
configfs
/
file.c
diff --git
a/fs/configfs/file.c
b/fs/configfs/file.c
index
f499803
..
2a7cb08
100644
(file)
--- a/
fs/configfs/file.c
+++ b/
fs/configfs/file.c
@@
-134,11
+134,11
@@
configfs_read_file(struct file *file, char __user *buf, size_t count, loff_t *pp
down(&buffer->sem);
if (buffer->needs_read_fill) {
down(&buffer->sem);
if (buffer->needs_read_fill) {
- if ((retval = fill_read_buffer(file->f_dentry,buffer)))
+ if ((retval = fill_read_buffer(file->f_
path.
dentry,buffer)))
goto out;
}
goto out;
}
- pr_debug("%s: count = %d, ppos = %lld, buf = %s\n",
- __FUNCTION__,
count,*ppos,
buffer->page);
+ pr_debug("%s: count = %
z
d, ppos = %lld, buf = %s\n",
+ __FUNCTION__,
count, *ppos,
buffer->page);
retval = flush_read_buffer(buffer,buf,count,ppos);
out:
up(&buffer->sem);
retval = flush_read_buffer(buffer,buf,count,ppos);
out:
up(&buffer->sem);
@@
-222,7
+222,7
@@
configfs_write_file(struct file *file, const char __user *buf, size_t count, lof
down(&buffer->sem);
len = fill_write_buffer(buffer, buf, count);
if (len > 0)
down(&buffer->sem);
len = fill_write_buffer(buffer, buf, count);
if (len > 0)
- len = flush_write_buffer(file->f_dentry, buffer, count);
+ len = flush_write_buffer(file->f_
path.
dentry, buffer, count);
if (len > 0)
*ppos += len;
up(&buffer->sem);
if (len > 0)
*ppos += len;
up(&buffer->sem);
@@
-231,8
+231,8
@@
configfs_write_file(struct file *file, const char __user *buf, size_t count, lof
static int check_perm(struct inode * inode, struct file * file)
{
static int check_perm(struct inode * inode, struct file * file)
{
- struct config_item *item = configfs_get_config_item(file->f_dentry->d_parent);
- struct configfs_attribute * attr = to_attr(file->f_dentry);
+ struct config_item *item = configfs_get_config_item(file->f_
path.
dentry->d_parent);
+ struct configfs_attribute * attr = to_attr(file->f_
path.
dentry);
struct configfs_buffer * buffer;
struct configfs_item_operations * ops = NULL;
int error = 0;
struct configfs_buffer * buffer;
struct configfs_item_operations * ops = NULL;
int error = 0;
@@
-274,15
+274,15
@@
static int check_perm(struct inode * inode, struct file * file)
/* No error? Great, allocate a buffer for the file, and store it
* it in file->private_data for easy access.
*/
/* No error? Great, allocate a buffer for the file, and store it
* it in file->private_data for easy access.
*/
- buffer = kmalloc(sizeof(struct configfs_buffer),GFP_KERNEL);
- if (buffer) {
- memset(buffer,0,sizeof(struct configfs_buffer));
- init_MUTEX(&buffer->sem);
- buffer->needs_read_fill = 1;
- buffer->ops = ops;
- file->private_data = buffer;
- } else
+ buffer = kzalloc(sizeof(struct configfs_buffer),GFP_KERNEL);
+ if (!buffer) {
error = -ENOMEM;
error = -ENOMEM;
+ goto Enomem;
+ }
+ init_MUTEX(&buffer->sem);
+ buffer->needs_read_fill = 1;
+ buffer->ops = ops;
+ file->private_data = buffer;
goto Done;
Einval:
goto Done;
Einval:
@@
-290,6
+290,7
@@
static int check_perm(struct inode * inode, struct file * file)
goto Done;
Eaccess:
error = -EACCES;
goto Done;
Eaccess:
error = -EACCES;
+ Enomem:
module_put(attr->ca_owner);
Done:
if (error && item)
module_put(attr->ca_owner);
Done:
if (error && item)
@@
-304,8
+305,8
@@
static int configfs_open_file(struct inode * inode, struct file * filp)
static int configfs_release(struct inode * inode, struct file * filp)
{
static int configfs_release(struct inode * inode, struct file * filp)
{
- struct config_item * item = to_item(filp->f_dentry->d_parent);
- struct configfs_attribute * attr = to_attr(filp->f_dentry);
+ struct config_item * item = to_item(filp->f_
path.
dentry->d_parent);
+ struct configfs_attribute * attr = to_attr(filp->f_
path.
dentry);
struct module * owner = attr->ca_owner;
struct configfs_buffer * buffer = filp->private_data;
struct module * owner = attr->ca_owner;
struct configfs_buffer * buffer = filp->private_data;