Re: [PATCH 16/21] sysfs: implement bin_buffer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/28/07, Tejun Heo <[email protected]> wrote:
Implement bin_buffer which contains a mutex and pointer to PAGE_SIZE
buffer to properly synchronize accesses to per-openfile buffer and
prepare for immediate-kobj-disconnect.

Signed-off-by: Tejun Heo <[email protected]>
---
[...]
@@ -135,14 +160,22 @@ static int open(struct inode * inode, struct file * file)
                goto Error;

        error = -ENOMEM;
-       file->private_data = kmalloc(PAGE_SIZE, GFP_KERNEL);
-       if (!file->private_data)
+       bb = kzalloc(sizeof(*bb), GFP_KERNEL);
+       if (!bb)
                goto Error;

+       bb->buffer = kmalloc(PAGE_SIZE, GFP_KERNEL);

You could simply do a __get_free_page() here instead of a kmalloc(PAGE_SIZE).

@@ -155,11 +188,12 @@ static int release(struct inode * inode, struct file * file)
        struct kobject * kobj = to_kobj(file->f_path.dentry->d_parent);
        struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata;
        struct bin_attribute *attr = attr_sd->s_elem.bin_attr.bin_attr;
-       u8 * buffer = file->private_data;
+       struct bin_buffer *bb = file->private_data;

        kobject_put(kobj);
        module_put(attr->attr.owner);
-       kfree(buffer);
+       kfree(bb->buffer);

And so this would become free_page().
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux