sysfs: add struct file* to bin_attr callbacks
This allows bin_attr->read,write,mmap callbacks to check file specific data (such as inode owner) as part of any privilege validation. Signed-off-by: Chris Wright <chrisw@sous-sol.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
68d75ed4b8
commit
2c3c8bea60
@@ -519,7 +519,8 @@ static const struct rtc_class_ops cmos_rtc_ops = {
|
||||
#define NVRAM_OFFSET (RTC_REG_D + 1)
|
||||
|
||||
static ssize_t
|
||||
cmos_nvram_read(struct kobject *kobj, struct bin_attribute *attr,
|
||||
cmos_nvram_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr,
|
||||
char *buf, loff_t off, size_t count)
|
||||
{
|
||||
int retval;
|
||||
@@ -547,7 +548,8 @@ cmos_nvram_read(struct kobject *kobj, struct bin_attribute *attr,
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
cmos_nvram_write(struct kobject *kobj, struct bin_attribute *attr,
|
||||
cmos_nvram_write(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr,
|
||||
char *buf, loff_t off, size_t count)
|
||||
{
|
||||
struct cmos_rtc *cmos;
|
||||
|
@@ -542,7 +542,8 @@ static void msg_init(struct spi_message *m, struct spi_transfer *x,
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
ds1305_nvram_read(struct kobject *kobj, struct bin_attribute *attr,
|
||||
ds1305_nvram_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr,
|
||||
char *buf, loff_t off, size_t count)
|
||||
{
|
||||
struct spi_device *spi;
|
||||
@@ -572,7 +573,8 @@ ds1305_nvram_read(struct kobject *kobj, struct bin_attribute *attr,
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
ds1305_nvram_write(struct kobject *kobj, struct bin_attribute *attr,
|
||||
ds1305_nvram_write(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr,
|
||||
char *buf, loff_t off, size_t count)
|
||||
{
|
||||
struct spi_device *spi;
|
||||
|
@@ -556,7 +556,8 @@ static const struct rtc_class_ops ds13xx_rtc_ops = {
|
||||
#define NVRAM_SIZE 56
|
||||
|
||||
static ssize_t
|
||||
ds1307_nvram_read(struct kobject *kobj, struct bin_attribute *attr,
|
||||
ds1307_nvram_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr,
|
||||
char *buf, loff_t off, size_t count)
|
||||
{
|
||||
struct i2c_client *client;
|
||||
@@ -580,7 +581,8 @@ ds1307_nvram_read(struct kobject *kobj, struct bin_attribute *attr,
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
ds1307_nvram_write(struct kobject *kobj, struct bin_attribute *attr,
|
||||
ds1307_nvram_write(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr,
|
||||
char *buf, loff_t off, size_t count)
|
||||
{
|
||||
struct i2c_client *client;
|
||||
|
@@ -423,8 +423,9 @@ static const struct rtc_class_ops ds1511_rtc_ops = {
|
||||
};
|
||||
|
||||
static ssize_t
|
||||
ds1511_nvram_read(struct kobject *kobj, struct bin_attribute *ba,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
ds1511_nvram_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *ba,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
{
|
||||
ssize_t count;
|
||||
|
||||
@@ -452,8 +453,9 @@ ds1511_nvram_read(struct kobject *kobj, struct bin_attribute *ba,
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
ds1511_nvram_write(struct kobject *kobj, struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
ds1511_nvram_write(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
{
|
||||
ssize_t count;
|
||||
|
||||
|
@@ -252,7 +252,7 @@ static const struct rtc_class_ops ds1553_rtc_ops = {
|
||||
.update_irq_enable = ds1553_rtc_update_irq_enable,
|
||||
};
|
||||
|
||||
static ssize_t ds1553_nvram_read(struct kobject *kobj,
|
||||
static ssize_t ds1553_nvram_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
{
|
||||
@@ -267,7 +267,7 @@ static ssize_t ds1553_nvram_read(struct kobject *kobj,
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t ds1553_nvram_write(struct kobject *kobj,
|
||||
static ssize_t ds1553_nvram_write(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
{
|
||||
|
@@ -128,7 +128,7 @@ static const struct rtc_class_ops ds1742_rtc_ops = {
|
||||
.set_time = ds1742_rtc_set_time,
|
||||
};
|
||||
|
||||
static ssize_t ds1742_nvram_read(struct kobject *kobj,
|
||||
static ssize_t ds1742_nvram_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
{
|
||||
@@ -143,7 +143,7 @@ static ssize_t ds1742_nvram_read(struct kobject *kobj,
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t ds1742_nvram_write(struct kobject *kobj,
|
||||
static ssize_t ds1742_nvram_write(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
{
|
||||
|
@@ -343,7 +343,7 @@ static const struct rtc_class_ops m48t02_rtc_ops = {
|
||||
.set_time = m48t59_rtc_set_time,
|
||||
};
|
||||
|
||||
static ssize_t m48t59_nvram_read(struct kobject *kobj,
|
||||
static ssize_t m48t59_nvram_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
{
|
||||
@@ -363,7 +363,7 @@ static ssize_t m48t59_nvram_read(struct kobject *kobj,
|
||||
return cnt;
|
||||
}
|
||||
|
||||
static ssize_t m48t59_nvram_write(struct kobject *kobj,
|
||||
static ssize_t m48t59_nvram_write(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
{
|
||||
|
@@ -244,7 +244,7 @@ static const struct rtc_class_ops stk17ta8_rtc_ops = {
|
||||
.alarm_irq_enable = stk17ta8_rtc_alarm_irq_enable,
|
||||
};
|
||||
|
||||
static ssize_t stk17ta8_nvram_read(struct kobject *kobj,
|
||||
static ssize_t stk17ta8_nvram_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr, char *buf,
|
||||
loff_t pos, size_t size)
|
||||
{
|
||||
@@ -259,7 +259,7 @@ static ssize_t stk17ta8_nvram_read(struct kobject *kobj,
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t stk17ta8_nvram_write(struct kobject *kobj,
|
||||
static ssize_t stk17ta8_nvram_write(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr, char *buf,
|
||||
loff_t pos, size_t size)
|
||||
{
|
||||
|
@@ -188,7 +188,7 @@ static const struct rtc_class_ops tx4939_rtc_ops = {
|
||||
.alarm_irq_enable = tx4939_rtc_alarm_irq_enable,
|
||||
};
|
||||
|
||||
static ssize_t tx4939_rtc_nvram_read(struct kobject *kobj,
|
||||
static ssize_t tx4939_rtc_nvram_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
{
|
||||
@@ -207,7 +207,7 @@ static ssize_t tx4939_rtc_nvram_read(struct kobject *kobj,
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t tx4939_rtc_nvram_write(struct kobject *kobj,
|
||||
static ssize_t tx4939_rtc_nvram_write(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t pos, size_t size)
|
||||
{
|
||||
|
Reference in New Issue
Block a user