diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/compat_ioctl.c | 1 | ||||
-rw-r--r-- | fs/namei.c | 1 | ||||
-rw-r--r-- | fs/proc/cmdline.c | 27 |
3 files changed, 28 insertions, 1 deletions
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c index 2acdc6ddefb5..5dbad71b7632 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c @@ -1297,6 +1297,7 @@ COMPATIBLE_IOCTL(I2C_TENBIT) COMPATIBLE_IOCTL(I2C_PEC) COMPATIBLE_IOCTL(I2C_RETRIES) COMPATIBLE_IOCTL(I2C_TIMEOUT) +COMPATIBLE_IOCTL(ENABLE_MI2S_CLK) /* hiddev */ COMPATIBLE_IOCTL(HIDIOCGVERSION) COMPATIBLE_IOCTL(HIDIOCAPPLICATION) diff --git a/fs/namei.c b/fs/namei.c index 9ec00139fcc9..d6d2d0dec826 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -2291,6 +2291,7 @@ static int path_lookupat(struct nameidata *nd, unsigned flags, struct path *path if (!err && nd->flags & LOOKUP_DIRECTORY) if (!d_can_lookup(nd->path.dentry)) err = -ENOTDIR; + if (!err) { *path = nd->path; nd->path.mnt = NULL; diff --git a/fs/proc/cmdline.c b/fs/proc/cmdline.c index cbd82dff7e81..5a5cbdcf1c78 100644 --- a/fs/proc/cmdline.c +++ b/fs/proc/cmdline.c @@ -2,10 +2,13 @@ #include <linux/init.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> +#include <asm/setup.h> + +static char new_command_line[COMMAND_LINE_SIZE]; static int cmdline_proc_show(struct seq_file *m, void *v) { - seq_printf(m, "%s\n", saved_command_line); + seq_printf(m, "%s\n", new_command_line); return 0; } @@ -23,6 +26,28 @@ static const struct file_operations cmdline_proc_fops = { static int __init proc_cmdline_init(void) { + char *offset_addr, *cmd = new_command_line; + + strcpy(cmd, saved_command_line); + + offset_addr = strstr(cmd, "androidboot.mode=usb_chg"); + if (offset_addr) { + size_t i, len, offset; + len = strlen(cmd); + offset = offset_addr - cmd; + for (i = 1; i < (len - offset); i++) { + if (cmd[offset + i] == ' ') + break; + } + memmove(offset_addr, &cmd[offset + i + 1], len - i - offset); + + strcat(cmd, " androidboot.mode=charger"); + } else { + if (strstr(cmd, "androidboot.bootreason=usb_chg")) { + strcat(cmd, " androidboot.mode=charger"); + } + } + proc_create("cmdline", 0, NULL, &cmdline_proc_fops); return 0; } |