diff options
author | Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> | 2017-09-26 08:25:10 +0200 |
---|---|---|
committer | Rob Herring <robh@kernel.org> | 2017-10-12 19:22:04 +0200 |
commit | db179e0d0d1003f10b798e072524be6bcdae5053 (patch) | |
tree | 1fd0391e582a81d8a3a6d34872a4d0eed3a67118 /drivers/of/base.c | |
parent | Linux 4.14-rc4 (diff) | |
download | linux-db179e0d0d1003f10b798e072524be6bcdae5053.tar.xz linux-db179e0d0d1003f10b798e072524be6bcdae5053.zip |
of: do not leak console options
Do not strdup() console options. It seems that the only reason for
it to be strdup()-ed was a compilation warning: printk, UART and
console drivers, for some reason, expect char pointer instead of
const char pointer. So we can just pass `of_stdout_options', but
need to cast it to char pointer. A better fix would be to change
printk, console drivers and UART to accept const char `options';
but that will take time - there are lots of drivers to update.
The patch also fixes a possible memory leak: add_preferred_console()
can fail, but we don't kfree() options.
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Diffstat (limited to 'drivers/of/base.c')
-rw-r--r-- | drivers/of/base.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c index 260d33c0f26c..63897531cd75 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -1781,8 +1781,12 @@ bool of_console_check(struct device_node *dn, char *name, int index) { if (!dn || dn != of_stdout || console_set_on_cmdline) return false; - return !add_preferred_console(name, index, - kstrdup(of_stdout_options, GFP_KERNEL)); + + /* + * XXX: cast `options' to char pointer to suppress complication + * warnings: printk, UART and console drivers expect char pointer. + */ + return !add_preferred_console(name, index, (char *)of_stdout_options); } EXPORT_SYMBOL_GPL(of_console_check); |