Messages in this thread Patch in this message | | | Date | Thu, 25 Apr 2013 20:31:45 -0000 | From | Thomas Gleixner <> | Subject | [patch 06/15] clocksource: Split out user string input |
| |
Split out the user string input for clocksource override. Preparatory patch for unbind.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- kernel/time/clocksource.c | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-)
Index: tip/kernel/time/clocksource.c =================================================================== --- tip.orig/kernel/time/clocksource.c +++ tip/kernel/time/clocksource.c @@ -174,7 +174,8 @@ clocks_calc_mult_shift(u32 *mult, u32 *s static struct clocksource *curr_clocksource; static LIST_HEAD(clocksource_list); static DEFINE_MUTEX(clocksource_mutex); -static char override_name[32]; +#define CS_NAME_LEN 32 +static char override_name[CS_NAME_LEN]; static int finished_booting; #ifdef CONFIG_CLOCKSOURCE_WATCHDOG @@ -833,6 +834,21 @@ sysfs_show_current_clocksources(struct d return count; } +static size_t clocksource_get_uname(const char *buf, char *dst, size_t cnt) +{ + /* strings from sysfs write are not 0 terminated! */ + if (!cnt || cnt >= CS_NAME_LEN) + return -EINVAL; + + /* strip of \n: */ + if (buf[cnt-1] == '\n') + cnt--; + if (cnt > 0) + memcpy(dst, buf, cnt); + dst[cnt] = 0; + return cnt; +} + /** * sysfs_override_clocksource - interface for manually overriding clocksource * @dev: unused @@ -847,22 +863,13 @@ static ssize_t sysfs_override_clocksourc struct device_attribute *attr, const char *buf, size_t count) { - size_t ret = count; - - /* strings from sysfs write are not 0 terminated! */ - if (count >= sizeof(override_name)) - return -EINVAL; - - /* strip of \n: */ - if (buf[count-1] == '\n') - count--; + size_t ret; mutex_lock(&clocksource_mutex); - if (count > 0) - memcpy(override_name, buf, count); - override_name[count] = 0; - clocksource_select(false); + ret = clocksource_get_uname(buf, override_name, count); + if (ret >= 0) + clocksource_select(false); mutex_unlock(&clocksource_mutex);
| |