mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
Merge branch 'hch.procfs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull procfs updates from Al Viro:
"Christoph's proc_create_... cleanups series"
* 'hch.procfs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (44 commits)
xfs, proc: hide unused xfs procfs helpers
isdn/gigaset: add back gigaset_procinfo assignment
proc: update SIZEOF_PDE_INLINE_NAME for the new pde fields
tty: replace ->proc_fops with ->proc_show
ide: replace ->proc_fops with ->proc_show
ide: remove ide_driver_proc_write
isdn: replace ->proc_fops with ->proc_show
atm: switch to proc_create_seq_private
atm: simplify procfs code
bluetooth: switch to proc_create_seq_data
netfilter/x_tables: switch to proc_create_seq_private
netfilter/xt_hashlimit: switch to proc_create_{seq,single}_data
neigh: switch to proc_create_seq_data
hostap: switch to proc_create_{seq,single}_data
bonding: switch to proc_create_seq_data
rtc/proc: switch to proc_create_single_data
drbd: switch to proc_create_single
resource: switch to proc_create_seq_data
staging/rtl8192u: simplify procfs code
jfs: simplify procfs code
...
This commit is contained in:
commit
cf626b0da7
266 changed files with 1229 additions and 6032 deletions
|
|
@ -1426,21 +1426,8 @@ static int idecd_capacity_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int idecd_capacity_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idecd_capacity_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idecd_capacity_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idecd_capacity_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static ide_proc_entry_t idecd_proc[] = {
|
||||
{ "capacity", S_IFREG|S_IRUGO, &idecd_capacity_proc_fops },
|
||||
{ "capacity", S_IFREG|S_IRUGO, idecd_capacity_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -52,19 +52,6 @@ static int idedisk_cache_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int idedisk_cache_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idedisk_cache_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idedisk_cache_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idedisk_cache_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int idedisk_capacity_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_drive_t*drive = (ide_drive_t *)m->private;
|
||||
|
|
@ -73,19 +60,6 @@ static int idedisk_capacity_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int idedisk_capacity_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idedisk_capacity_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idedisk_capacity_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idedisk_capacity_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __idedisk_proc_show(struct seq_file *m, ide_drive_t *drive, u8 sub_cmd)
|
||||
{
|
||||
u8 *buf;
|
||||
|
|
@ -114,43 +88,17 @@ static int idedisk_sv_proc_show(struct seq_file *m, void *v)
|
|||
return __idedisk_proc_show(m, m->private, ATA_SMART_READ_VALUES);
|
||||
}
|
||||
|
||||
static int idedisk_sv_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idedisk_sv_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idedisk_sv_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idedisk_sv_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int idedisk_st_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
return __idedisk_proc_show(m, m->private, ATA_SMART_READ_THRESHOLDS);
|
||||
}
|
||||
|
||||
static int idedisk_st_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idedisk_st_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idedisk_st_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idedisk_st_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
ide_proc_entry_t ide_disk_proc[] = {
|
||||
{ "cache", S_IFREG|S_IRUGO, &idedisk_cache_proc_fops },
|
||||
{ "capacity", S_IFREG|S_IRUGO, &idedisk_capacity_proc_fops },
|
||||
{ "geometry", S_IFREG|S_IRUGO, &ide_geometry_proc_fops },
|
||||
{ "smart_values", S_IFREG|S_IRUSR, &idedisk_sv_proc_fops },
|
||||
{ "smart_thresholds", S_IFREG|S_IRUSR, &idedisk_st_proc_fops },
|
||||
{ "cache", S_IFREG|S_IRUGO, idedisk_cache_proc_show },
|
||||
{ "capacity", S_IFREG|S_IRUGO, idedisk_capacity_proc_show },
|
||||
{ "geometry", S_IFREG|S_IRUGO, ide_geometry_proc_show },
|
||||
{ "smart_values", S_IFREG|S_IRUSR, idedisk_sv_proc_show },
|
||||
{ "smart_thresholds", S_IFREG|S_IRUSR, idedisk_st_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -14,22 +14,9 @@ static int idefloppy_capacity_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int idefloppy_capacity_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idefloppy_capacity_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idefloppy_capacity_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idefloppy_capacity_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
ide_proc_entry_t ide_floppy_proc[] = {
|
||||
{ "capacity", S_IFREG|S_IRUGO, &idefloppy_capacity_proc_fops },
|
||||
{ "geometry", S_IFREG|S_IRUGO, &ide_geometry_proc_fops },
|
||||
{ "capacity", S_IFREG|S_IRUGO, idefloppy_capacity_proc_show },
|
||||
{ "geometry", S_IFREG|S_IRUGO, ide_geometry_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -56,19 +56,6 @@ static int ide_imodel_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_imodel_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_imodel_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ide_imodel_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_imodel_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int ide_mate_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_hwif_t *hwif = (ide_hwif_t *) m->private;
|
||||
|
|
@ -80,19 +67,6 @@ static int ide_mate_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_mate_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_mate_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ide_mate_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_mate_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int ide_channel_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_hwif_t *hwif = (ide_hwif_t *) m->private;
|
||||
|
|
@ -101,19 +75,6 @@ static int ide_channel_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_channel_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_channel_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ide_channel_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_channel_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int ide_identify_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_drive_t *drive = (ide_drive_t *)m->private;
|
||||
|
|
@ -141,19 +102,6 @@ static int ide_identify_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_identify_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_identify_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ide_identify_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_identify_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/**
|
||||
* ide_find_setting - find a specific setting
|
||||
* @st: setting table pointer
|
||||
|
|
@ -441,27 +389,14 @@ static const struct file_operations ide_settings_proc_fops = {
|
|||
.write = ide_settings_proc_write,
|
||||
};
|
||||
|
||||
static int ide_capacity_proc_show(struct seq_file *m, void *v)
|
||||
int ide_capacity_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
seq_printf(m, "%llu\n", (long long)0x7fffffff);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ide_capacity_proc_show);
|
||||
|
||||
static int ide_capacity_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_capacity_proc_show, NULL);
|
||||
}
|
||||
|
||||
const struct file_operations ide_capacity_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_capacity_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(ide_capacity_proc_fops);
|
||||
|
||||
static int ide_geometry_proc_show(struct seq_file *m, void *v)
|
||||
int ide_geometry_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_drive_t *drive = (ide_drive_t *) m->private;
|
||||
|
||||
|
|
@ -471,20 +406,7 @@ static int ide_geometry_proc_show(struct seq_file *m, void *v)
|
|||
drive->bios_cyl, drive->bios_head, drive->bios_sect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ide_geometry_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_geometry_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
const struct file_operations ide_geometry_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_geometry_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
EXPORT_SYMBOL(ide_geometry_proc_fops);
|
||||
EXPORT_SYMBOL(ide_geometry_proc_show);
|
||||
|
||||
static int ide_dmodel_proc_show(struct seq_file *seq, void *v)
|
||||
{
|
||||
|
|
@ -495,19 +417,6 @@ static int ide_dmodel_proc_show(struct seq_file *seq, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_dmodel_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_dmodel_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ide_dmodel_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_dmodel_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int ide_driver_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_drive_t *drive = (ide_drive_t *)m->private;
|
||||
|
|
@ -523,65 +432,6 @@ static int ide_driver_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_driver_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_driver_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static int ide_replace_subdriver(ide_drive_t *drive, const char *driver)
|
||||
{
|
||||
struct device *dev = &drive->gendev;
|
||||
int ret = 1;
|
||||
int err;
|
||||
|
||||
device_release_driver(dev);
|
||||
/* FIXME: device can still be in use by previous driver */
|
||||
strlcpy(drive->driver_req, driver, sizeof(drive->driver_req));
|
||||
err = device_attach(dev);
|
||||
if (err < 0)
|
||||
printk(KERN_WARNING "IDE: %s: device_attach error: %d\n",
|
||||
__func__, err);
|
||||
drive->driver_req[0] = 0;
|
||||
if (dev->driver == NULL) {
|
||||
err = device_attach(dev);
|
||||
if (err < 0)
|
||||
printk(KERN_WARNING
|
||||
"IDE: %s: device_attach(2) error: %d\n",
|
||||
__func__, err);
|
||||
}
|
||||
if (dev->driver && !strcmp(dev->driver->name, driver))
|
||||
ret = 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t ide_driver_proc_write(struct file *file, const char __user *buffer,
|
||||
size_t count, loff_t *pos)
|
||||
{
|
||||
ide_drive_t *drive = PDE_DATA(file_inode(file));
|
||||
char name[32];
|
||||
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EACCES;
|
||||
if (count > 31)
|
||||
count = 31;
|
||||
if (copy_from_user(name, buffer, count))
|
||||
return -EFAULT;
|
||||
name[count] = '\0';
|
||||
if (ide_replace_subdriver(drive, name))
|
||||
return -EINVAL;
|
||||
return count;
|
||||
}
|
||||
|
||||
static const struct file_operations ide_driver_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_driver_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
.write = ide_driver_proc_write,
|
||||
};
|
||||
|
||||
static int ide_media_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_drive_t *drive = (ide_drive_t *) m->private;
|
||||
|
|
@ -613,11 +463,10 @@ static const struct file_operations ide_media_proc_fops = {
|
|||
};
|
||||
|
||||
static ide_proc_entry_t generic_drive_entries[] = {
|
||||
{ "driver", S_IFREG|S_IRUGO, &ide_driver_proc_fops },
|
||||
{ "identify", S_IFREG|S_IRUSR, &ide_identify_proc_fops},
|
||||
{ "media", S_IFREG|S_IRUGO, &ide_media_proc_fops },
|
||||
{ "model", S_IFREG|S_IRUGO, &ide_dmodel_proc_fops },
|
||||
{ "settings", S_IFREG|S_IRUSR|S_IWUSR, &ide_settings_proc_fops},
|
||||
{ "driver", S_IFREG|S_IRUGO, ide_driver_proc_show },
|
||||
{ "identify", S_IFREG|S_IRUSR, ide_identify_proc_show },
|
||||
{ "media", S_IFREG|S_IRUGO, ide_media_proc_show },
|
||||
{ "model", S_IFREG|S_IRUGO, ide_dmodel_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
@ -628,7 +477,7 @@ static void ide_add_proc_entries(struct proc_dir_entry *dir, ide_proc_entry_t *p
|
|||
if (!dir || !p)
|
||||
return;
|
||||
while (p->name != NULL) {
|
||||
ent = proc_create_data(p->name, p->mode, dir, p->proc_fops, data);
|
||||
ent = proc_create_single_data(p->name, p->mode, dir, p->show, data);
|
||||
if (!ent) return;
|
||||
p++;
|
||||
}
|
||||
|
|
@ -693,8 +542,12 @@ void ide_proc_port_register_devices(ide_hwif_t *hwif)
|
|||
continue;
|
||||
|
||||
drive->proc = proc_mkdir(drive->name, parent);
|
||||
if (drive->proc)
|
||||
if (drive->proc) {
|
||||
ide_add_proc_entries(drive->proc, generic_drive_entries, drive);
|
||||
proc_create_data("setting", S_IFREG|S_IRUSR|S_IWUSR,
|
||||
drive->proc, &ide_settings_proc_fops,
|
||||
drive);
|
||||
}
|
||||
sprintf(name, "ide%d/%s", (drive->name[2]-'a')/2, drive->name);
|
||||
ent = proc_symlink(drive->name, proc_ide_root, name);
|
||||
if (!ent) return;
|
||||
|
|
@ -704,6 +557,7 @@ void ide_proc_port_register_devices(ide_hwif_t *hwif)
|
|||
void ide_proc_unregister_device(ide_drive_t *drive)
|
||||
{
|
||||
if (drive->proc) {
|
||||
remove_proc_entry("settings", drive->proc);
|
||||
ide_remove_proc_entries(drive->proc, generic_drive_entries);
|
||||
remove_proc_entry(drive->name, proc_ide_root);
|
||||
remove_proc_entry(drive->name, drive->hwif->proc);
|
||||
|
|
@ -712,9 +566,9 @@ void ide_proc_unregister_device(ide_drive_t *drive)
|
|||
}
|
||||
|
||||
static ide_proc_entry_t hwif_entries[] = {
|
||||
{ "channel", S_IFREG|S_IRUGO, &ide_channel_proc_fops },
|
||||
{ "mate", S_IFREG|S_IRUGO, &ide_mate_proc_fops },
|
||||
{ "model", S_IFREG|S_IRUGO, &ide_imodel_proc_fops },
|
||||
{ "channel", S_IFREG|S_IRUGO, ide_channel_proc_show },
|
||||
{ "mate", S_IFREG|S_IRUGO, ide_mate_proc_show },
|
||||
{ "model", S_IFREG|S_IRUGO, ide_imodel_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1847,22 +1847,9 @@ static int idetape_name_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int idetape_name_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idetape_name_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idetape_name_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idetape_name_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static ide_proc_entry_t idetape_proc[] = {
|
||||
{ "capacity", S_IFREG|S_IRUGO, &ide_capacity_proc_fops },
|
||||
{ "name", S_IFREG|S_IRUGO, &idetape_name_proc_fops },
|
||||
{ "capacity", S_IFREG|S_IRUGO, ide_capacity_proc_show },
|
||||
{ "name", S_IFREG|S_IRUGO, idetape_name_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue