mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-16 17:23:55 +08:00
416dd13ad6
Many callers either use NULL or const strings for the third argument of clk_register_clkdev. For those that do not and use a non-const string, this is a risk for format strings being accidentally processed (for example in device names). As this interface is already used as if it weren't a format string (prints nothing when NULL), and there are zero users of the format strings, remove the format string interface to make sure format strings will not leak into the clkdev. $ git grep '\bclk_register_clkdev\b' | grep % | wc -l 0 Unfortunately, all the internals expect a va_list even though they treat a NULL format string as special. To deal with this, we must pass either (..., "%s", string) or (..., NULL) so that a the va_list will be created correctly (passing the name as an argument, not as a format string). Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
/*
|
|
* include/linux/clkdev.h
|
|
*
|
|
* Copyright (C) 2008 Russell King.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* Helper for the clk API to assist looking up a struct clk.
|
|
*/
|
|
#ifndef __CLKDEV_H
|
|
#define __CLKDEV_H
|
|
|
|
#include <asm/clkdev.h>
|
|
|
|
struct clk;
|
|
struct device;
|
|
|
|
struct clk_lookup {
|
|
struct list_head node;
|
|
const char *dev_id;
|
|
const char *con_id;
|
|
struct clk *clk;
|
|
struct clk_hw *clk_hw;
|
|
};
|
|
|
|
#define CLKDEV_INIT(d, n, c) \
|
|
{ \
|
|
.dev_id = d, \
|
|
.con_id = n, \
|
|
.clk = c, \
|
|
}
|
|
|
|
struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id,
|
|
const char *dev_fmt, ...) __printf(3, 4);
|
|
|
|
void clkdev_add(struct clk_lookup *cl);
|
|
void clkdev_drop(struct clk_lookup *cl);
|
|
|
|
struct clk_lookup *clkdev_create(struct clk *clk, const char *con_id,
|
|
const char *dev_fmt, ...) __printf(3, 4);
|
|
|
|
void clkdev_add_table(struct clk_lookup *, size_t);
|
|
int clk_add_alias(const char *, const char *, const char *, struct device *);
|
|
|
|
int clk_register_clkdev(struct clk *, const char *, const char *);
|
|
int clk_register_clkdevs(struct clk *, struct clk_lookup *, size_t);
|
|
|
|
#ifdef CONFIG_COMMON_CLK
|
|
int __clk_get(struct clk *clk);
|
|
void __clk_put(struct clk *clk);
|
|
#endif
|
|
|
|
#endif
|