lkml.org 
[lkml]   [2014]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH RFC 01/12] time: Rename mktime() to mktime_unsafe()
Date
The kernel uses 32-bit signed value(time_t) for seconds since 1970-01-01:00:00:00, thus it
will overflow at 2038-01-19 03:14:08 on 32-bit systems. We call this "2038 safety" issue.

Currently, mktime() deals with "unsigned long" which is 2038 unsafe on 32-bit systems.

As part of addressing 2038 saftey for in-kernel uses, this patch renames mktime() to
mktime_unsafe(), and changes all its calling users correspondingly. The safe version
of mktime() will be added in the following patch.

Signed-off-by: pang.xunlei <pang.xunlei@linaro.org>
---
arch/avr32/kernel/time.c | 2 +-
arch/frv/kernel/time.c | 2 +-
arch/ia64/kernel/efi.c | 2 +-
arch/m32r/kernel/time.c | 2 +-
arch/m68k/kernel/time.c | 2 +-
arch/m68k/mac/misc.c | 2 +-
arch/mips/dec/time.c | 2 +-
arch/mips/include/asm/mc146818-time.h | 2 +-
arch/mips/sibyte/swarm/rtc_m41t81.c | 2 +-
arch/mips/sibyte/swarm/rtc_xicor1241.c | 2 +-
arch/mips/sibyte/swarm/setup.c | 2 +-
arch/mn10300/kernel/rtc.c | 4 ++--
arch/parisc/include/asm/rtc.h | 2 +-
arch/powerpc/kernel/rtas-proc.c | 2 +-
arch/powerpc/kernel/rtas-rtc.c | 2 +-
arch/powerpc/kernel/time.c | 2 +-
arch/powerpc/platforms/8xx/m8xx_setup.c | 2 +-
arch/powerpc/platforms/cell/beat.c | 2 +-
arch/powerpc/platforms/maple/time.c | 2 +-
arch/powerpc/platforms/pasemi/time.c | 2 +-
arch/powerpc/platforms/powermac/time.c | 2 +-
arch/powerpc/platforms/powernv/opal-rtc.c | 2 +-
arch/sh/boards/mach-sh03/rtc.c | 2 +-
arch/sh/kernel/time.c | 2 +-
arch/x86/kernel/rtc.c | 2 +-
arch/x86/platform/efi/efi.c | 2 +-
arch/x86/platform/intel-mid/intel_mid_vrtc.c | 2 +-
drivers/rtc/rtc-lib.c | 2 +-
drivers/rtc/rtc-ls1x.c | 2 +-
drivers/rtc/rtc-tps6586x.c | 2 +-
drivers/rtc/rtc-vr41xx.c | 8 ++++----
include/linux/time.h | 6 +++---
kernel/time/time.c | 4 ++--
33 files changed, 40 insertions(+), 40 deletions(-)

diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c
index d0f771b..37ba222 100644
--- a/arch/avr32/kernel/time.c
+++ b/arch/avr32/kernel/time.c
@@ -123,7 +123,7 @@ static struct clock_event_device comparator = {

void read_persistent_clock(struct timespec *ts)
{
- ts->tv_sec = mktime(2007, 1, 1, 0, 0, 0);
+ ts->tv_sec = mktime_unsafe(2007, 1, 1, 0, 0, 0);
ts->tv_nsec = 0;
}

diff --git a/arch/frv/kernel/time.c b/arch/frv/kernel/time.c
index 332e00b..b695e0e 100644
--- a/arch/frv/kernel/time.c
+++ b/arch/frv/kernel/time.c
@@ -101,7 +101,7 @@ void read_persistent_clock(struct timespec *ts)

if ((year += 1900) < 1970)
year += 100;
- ts->tv_sec = mktime(year, mon, day, hour, min, sec);
+ ts->tv_sec = mktime_unsafe(year, mon, day, hour, min, sec);
ts->tv_nsec = 0;
}

diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 741b99c..c2ae0fd 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -245,7 +245,7 @@ efi_gettimeofday (struct timespec *ts)
return;
}

- ts->tv_sec = mktime(tm.year, tm.month, tm.day,
+ ts->tv_sec = mktime_unsafe(tm.year, tm.month, tm.day,
tm.hour, tm.minute, tm.second);
ts->tv_nsec = tm.nanosecond;
}
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c
index 093f276..56956ea 100644
--- a/arch/m32r/kernel/time.c
+++ b/arch/m32r/kernel/time.c
@@ -157,7 +157,7 @@ void read_persistent_clock(struct timespec *ts)
epoch = 1952;
year += epoch;

- ts->tv_sec = mktime(year, mon, day, hour, min, sec);
+ ts->tv_sec = mktime_unsafe(year, mon, day, hour, min, sec);
ts->tv_nsec = (INITIAL_JIFFIES % HZ) * (NSEC_PER_SEC / HZ);
}

diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c
index 3857737..4ed21ea 100644
--- a/arch/m68k/kernel/time.c
+++ b/arch/m68k/kernel/time.c
@@ -81,7 +81,7 @@ void read_persistent_clock(struct timespec *ts)

if ((time.tm_year += 1900) < 1970)
time.tm_year += 100;
- ts->tv_sec = mktime(time.tm_year, time.tm_mon, time.tm_mday,
+ ts->tv_sec = mktime_unsafe(time.tm_year, time.tm_mon, time.tm_mday,
time.tm_hour, time.tm_min, time.tm_sec);
}
}
diff --git a/arch/m68k/mac/misc.c b/arch/m68k/mac/misc.c
index 707b61a..85be5f3 100644
--- a/arch/m68k/mac/misc.c
+++ b/arch/m68k/mac/misc.c
@@ -730,7 +730,7 @@ int mac_hwclk(int op, struct rtc_time *t)
t->tm_hour, t->tm_min, t->tm_sec);
#endif

- now = mktime(t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,
+ now = mktime_unsafe(t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,
t->tm_hour, t->tm_min, t->tm_sec);

switch (macintosh_config->adb_type) {
diff --git a/arch/mips/dec/time.c b/arch/mips/dec/time.c
index 1914e56..d9905cb 100644
--- a/arch/mips/dec/time.c
+++ b/arch/mips/dec/time.c
@@ -53,7 +53,7 @@ void read_persistent_clock(struct timespec *ts)

year += real_year - 72 + 2000;

- ts->tv_sec = mktime(year, mon, day, hour, min, sec);
+ ts->tv_sec = mktime_unsafe(year, mon, day, hour, min, sec);
ts->tv_nsec = 0;
}

diff --git a/arch/mips/include/asm/mc146818-time.h b/arch/mips/include/asm/mc146818-time.h
index 9e1ad26..a5df6b0 100644
--- a/arch/mips/include/asm/mc146818-time.h
+++ b/arch/mips/include/asm/mc146818-time.h
@@ -113,7 +113,7 @@ static inline unsigned long mc146818_get_cmos_time(void)
spin_unlock_irqrestore(&rtc_lock, flags);
year = mc146818_decode_year(year);

- return mktime(year, mon, day, hour, min, sec);
+ return mktime_unsafe(year, mon, day, hour, min, sec);
}

#endif /* __ASM_MC146818_TIME_H */
diff --git a/arch/mips/sibyte/swarm/rtc_m41t81.c b/arch/mips/sibyte/swarm/rtc_m41t81.c
index b732600..c117804 100644
--- a/arch/mips/sibyte/swarm/rtc_m41t81.c
+++ b/arch/mips/sibyte/swarm/rtc_m41t81.c
@@ -218,7 +218,7 @@ unsigned long m41t81_get_time(void)

year += 2000;

- return mktime(year, mon, day, hour, min, sec);
+ return mktime_unsafe(year, mon, day, hour, min, sec);
}

int m41t81_probe(void)
diff --git a/arch/mips/sibyte/swarm/rtc_xicor1241.c b/arch/mips/sibyte/swarm/rtc_xicor1241.c
index 178a824..ba9e4b40 100644
--- a/arch/mips/sibyte/swarm/rtc_xicor1241.c
+++ b/arch/mips/sibyte/swarm/rtc_xicor1241.c
@@ -201,7 +201,7 @@ unsigned long xicor_get_time(void)

year += (y2k * 100);

- return mktime(year, mon, day, hour, min, sec);
+ return mktime_unsafe(year, mon, day, hour, min, sec);
}

int xicor_probe(void)
diff --git a/arch/mips/sibyte/swarm/setup.c b/arch/mips/sibyte/swarm/setup.c
index 3462c83..8c5aca1 100644
--- a/arch/mips/sibyte/swarm/setup.c
+++ b/arch/mips/sibyte/swarm/setup.c
@@ -102,7 +102,7 @@ void read_persistent_clock(struct timespec *ts)

case RTC_NONE:
default:
- sec = mktime(2000, 1, 1, 0, 0, 0);
+ sec = mktime_unsafe(2000, 1, 1, 0, 0, 0);
break;
}
ts->tv_sec = sec;
diff --git a/arch/mn10300/kernel/rtc.c b/arch/mn10300/kernel/rtc.c
index 48d7058..35915d5 100644
--- a/arch/mn10300/kernel/rtc.c
+++ b/arch/mn10300/kernel/rtc.c
@@ -30,12 +30,12 @@ void read_persistent_clock(struct timespec *ts)
get_rtc_time(&tm);

ts->tv_nsec = 0;
- ts->tv_sec = mktime(tm.tm_year, tm.tm_mon, tm.tm_mday,
+ ts->tv_sec = mktime_unsafe(tm.tm_year, tm.tm_mon, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);

/* if rtc is way off in the past, set something reasonable */
if (ts->tv_sec < 0)
- ts->tv_sec = mktime(2009, 1, 1, 12, 0, 0);
+ ts->tv_sec = mktime_unsafe(2009, 1, 1, 12, 0, 0);
}

/*
diff --git a/arch/parisc/include/asm/rtc.h b/arch/parisc/include/asm/rtc.h
index 099d641..c360087 100644
--- a/arch/parisc/include/asm/rtc.h
+++ b/arch/parisc/include/asm/rtc.h
@@ -100,7 +100,7 @@ static int set_rtc_time(struct rtc_time *wtime)
{
u_int32_t secs;

- secs = mktime(wtime->tm_year + 1900, wtime->tm_mon + 1, wtime->tm_mday,
+ secs = mktime_unsafe(wtime->tm_year + 1900, wtime->tm_mon + 1, wtime->tm_mday,
wtime->tm_hour, wtime->tm_min, wtime->tm_sec);

if(pdc_tod_set(secs, 0) < 0)
diff --git a/arch/powerpc/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c
index 8777fb0..1183005 100644
--- a/arch/powerpc/kernel/rtas-proc.c
+++ b/arch/powerpc/kernel/rtas-proc.c
@@ -403,7 +403,7 @@ static int ppc_rtas_clock_show(struct seq_file *m, void *v)
year = ret[0]; mon = ret[1]; day = ret[2];
hour = ret[3]; min = ret[4]; sec = ret[5];
seq_printf(m, "%lu\n",
- mktime(year, mon, day, hour, min, sec));
+ mktime_unsafe(year, mon, day, hour, min, sec));
}
return 0;
}
diff --git a/arch/powerpc/kernel/rtas-rtc.c b/arch/powerpc/kernel/rtas-rtc.c
index c57c193..ba1655a 100644
--- a/arch/powerpc/kernel/rtas-rtc.c
+++ b/arch/powerpc/kernel/rtas-rtc.c
@@ -37,7 +37,7 @@ unsigned long __init rtas_get_boot_time(void)
return 0;
}

- return mktime(ret[0], ret[1], ret[2], ret[3], ret[4], ret[5]);
+ return mktime_unsafe(ret[0], ret[1], ret[2], ret[3], ret[4], ret[5]);
}

/* NOTE: get_rtc_time will get an error if executed in interrupt context
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 7505599..e78f82f 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -713,7 +713,7 @@ static void __read_persistent_clock(struct timespec *ts)
}
ppc_md.get_rtc_time(&tm);

- ts->tv_sec = mktime(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
+ ts->tv_sec = mktime_unsafe(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
}

diff --git a/arch/powerpc/platforms/8xx/m8xx_setup.c b/arch/powerpc/platforms/8xx/m8xx_setup.c
index d303774..5e3e471 100644
--- a/arch/powerpc/platforms/8xx/m8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
@@ -172,7 +172,7 @@ int mpc8xx_set_rtc_time(struct rtc_time *tm)

sys_tmr1 = immr_map(im_sitk);
sys_tmr2 = immr_map(im_sit);
- time = mktime(tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
+ time = mktime_unsafe(tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);

out_be32(&sys_tmr1->sitk_rtck, KAPWR_KEY);
diff --git a/arch/powerpc/platforms/cell/beat.c b/arch/powerpc/platforms/cell/beat.c
index affcf56..48b1b79 100644
--- a/arch/powerpc/platforms/cell/beat.c
+++ b/arch/powerpc/platforms/cell/beat.c
@@ -58,7 +58,7 @@ void beat_halt(void)
int beat_set_rtc_time(struct rtc_time *rtc_time)
{
u64 tim;
- tim = mktime(rtc_time->tm_year+1900,
+ tim = mktime_unsafe(rtc_time->tm_year+1900,
rtc_time->tm_mon+1, rtc_time->tm_mday,
rtc_time->tm_hour, rtc_time->tm_min, rtc_time->tm_sec);
if (beat_rtc_write(tim))
diff --git a/arch/powerpc/platforms/maple/time.c b/arch/powerpc/platforms/maple/time.c
index b4a369d..2f6d1cb 100644
--- a/arch/powerpc/platforms/maple/time.c
+++ b/arch/powerpc/platforms/maple/time.c
@@ -170,7 +170,7 @@ unsigned long __init maple_get_boot_time(void)
request_resource(&ioport_resource, &rtc_iores);

maple_get_rtc_time(&tm);
- return mktime(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
+ return mktime_unsafe(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
}

diff --git a/arch/powerpc/platforms/pasemi/time.c b/arch/powerpc/platforms/pasemi/time.c
index fa54351..656c2c5 100644
--- a/arch/powerpc/platforms/pasemi/time.c
+++ b/arch/powerpc/platforms/pasemi/time.c
@@ -24,5 +24,5 @@
unsigned long __init pas_get_boot_time(void)
{
/* Let's just return a fake date right now */
- return mktime(2006, 1, 1, 12, 0, 0);
+ return mktime_unsafe(2006, 1, 1, 12, 0, 0);
}
diff --git a/arch/powerpc/platforms/powermac/time.c b/arch/powerpc/platforms/powermac/time.c
index 8680bb6..1b591c0 100644
--- a/arch/powerpc/platforms/powermac/time.c
+++ b/arch/powerpc/platforms/powermac/time.c
@@ -96,7 +96,7 @@ static void to_rtc_time(unsigned long now, struct rtc_time *tm)
defined(CONFIG_PMAC_SMU)
static unsigned long from_rtc_time(struct rtc_time *tm)
{
- return mktime(tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
+ return mktime_unsafe(tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
}
#endif
diff --git a/arch/powerpc/platforms/powernv/opal-rtc.c b/arch/powerpc/platforms/powernv/opal-rtc.c
index 499707d..5e9c80a 100644
--- a/arch/powerpc/platforms/powernv/opal-rtc.c
+++ b/arch/powerpc/platforms/powernv/opal-rtc.c
@@ -58,7 +58,7 @@ unsigned long __init opal_get_boot_time(void)
y_m_d = be32_to_cpu(__y_m_d);
h_m_s_ms = be64_to_cpu(__h_m_s_ms);
opal_to_tm(y_m_d, h_m_s_ms, &tm);
- return mktime(tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
+ return mktime_unsafe(tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
out:
ppc_md.get_rtc_time = NULL;
diff --git a/arch/sh/boards/mach-sh03/rtc.c b/arch/sh/boards/mach-sh03/rtc.c
index f83ac79..67ce035 100644
--- a/arch/sh/boards/mach-sh03/rtc.c
+++ b/arch/sh/boards/mach-sh03/rtc.c
@@ -74,7 +74,7 @@ unsigned long get_cmos_time(void)
}

spin_unlock(&sh03_rtc_lock);
- return mktime(year, mon, day, hour, min, sec);
+ return mktime_unsafe(year, mon, day, hour, min, sec);
}

void sh03_rtc_gettimeofday(struct timespec *tv)
diff --git a/arch/sh/kernel/time.c b/arch/sh/kernel/time.c
index d6d0a98..ec1d24b 100644
--- a/arch/sh/kernel/time.c
+++ b/arch/sh/kernel/time.c
@@ -26,7 +26,7 @@
/* Dummy RTC ops */
static void null_rtc_get_time(struct timespec *tv)
{
- tv->tv_sec = mktime(2000, 1, 1, 0, 0, 0);
+ tv->tv_sec = mktime_unsafe(2000, 1, 1, 0, 0, 0);
tv->tv_nsec = 0;
}

diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c
index ca9622a..820958d 100644
--- a/arch/x86/kernel/rtc.c
+++ b/arch/x86/kernel/rtc.c
@@ -108,7 +108,7 @@ void mach_get_cmos_time(struct timespec *now)
} else
year += CMOS_YEARS_OFFS;

- now->tv_sec = mktime(year, mon, day, hour, min, sec);
+ now->tv_sec = mktime_unsafe(year, mon, day, hour, min, sec);
now->tv_nsec = 0;
}

diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 850da94..cb4116a 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -114,7 +114,7 @@ void efi_get_time(struct timespec *now)
if (status != EFI_SUCCESS)
pr_err("Oops: efitime: can't read time!\n");

- now->tv_sec = mktime(eft.year, eft.month, eft.day, eft.hour,
+ now->tv_sec = mktime_unsafe(eft.year, eft.month, eft.day, eft.hour,
eft.minute, eft.second);
now->tv_nsec = 0;
}
diff --git a/arch/x86/platform/intel-mid/intel_mid_vrtc.c b/arch/x86/platform/intel-mid/intel_mid_vrtc.c
index 4762cff..5685ca2 100644
--- a/arch/x86/platform/intel-mid/intel_mid_vrtc.c
+++ b/arch/x86/platform/intel-mid/intel_mid_vrtc.c
@@ -82,7 +82,7 @@ void vrtc_get_time(struct timespec *now)
pr_info("vRTC: sec: %d min: %d hour: %d day: %d "
"mon: %d year: %d\n", sec, min, hour, mday, mon, year);

- now->tv_sec = mktime(year, mon, mday, hour, min, sec);
+ now->tv_sec = mktime_unsafe(year, mon, mday, hour, min, sec);
now->tv_nsec = 0;
}

diff --git a/drivers/rtc/rtc-lib.c b/drivers/rtc/rtc-lib.c
index c4cf057..a0b473a 100644
--- a/drivers/rtc/rtc-lib.c
+++ b/drivers/rtc/rtc-lib.c
@@ -113,7 +113,7 @@ EXPORT_SYMBOL(rtc_valid_tm);
*/
int rtc_tm_to_time(struct rtc_time *tm, unsigned long *time)
{
- *time = mktime(tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
+ *time = mktime_unsafe(tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
return 0;
}
diff --git a/drivers/rtc/rtc-ls1x.c b/drivers/rtc/rtc-ls1x.c
index 682ecb0..04687c9 100644
--- a/drivers/rtc/rtc-ls1x.c
+++ b/drivers/rtc/rtc-ls1x.c
@@ -93,7 +93,7 @@ static int ls1x_rtc_read_time(struct device *dev, struct rtc_time *rtm)
t = readl(SYS_TOYREAD1);

memset(rtm, 0, sizeof(struct rtc_time));
- t = mktime((t & LS1X_YEAR_MASK), ls1x_get_month(v),
+ t = mktime_unsafe((t & LS1X_YEAR_MASK), ls1x_get_month(v),
ls1x_get_day(v), ls1x_get_hour(v),
ls1x_get_min(v), ls1x_get_sec(v));
rtc_time_to_tm(t, rtm);
diff --git a/drivers/rtc/rtc-tps6586x.c b/drivers/rtc/rtc-tps6586x.c
index 426901c..5f8d726 100644
--- a/drivers/rtc/rtc-tps6586x.c
+++ b/drivers/rtc/rtc-tps6586x.c
@@ -261,7 +261,7 @@ static int tps6586x_rtc_probe(struct platform_device *pdev)
rtc->irq = platform_get_irq(pdev, 0);

/* Set epoch start as 00:00:00:01:01:2009 */
- rtc->epoch_start = mktime(2009, 1, 1, 0, 0, 0);
+ rtc->epoch_start = mktime_unsafe(2009, 1, 1, 0, 0, 0);

/* 1 kHz tick mode, enable tick counting */
ret = tps6586x_update(tps_dev, RTC_CTRL,
diff --git a/drivers/rtc/rtc-vr41xx.c b/drivers/rtc/rtc-vr41xx.c
index 88c9c92..a3d5772 100644
--- a/drivers/rtc/rtc-vr41xx.c
+++ b/drivers/rtc/rtc-vr41xx.c
@@ -140,7 +140,7 @@ static int vr41xx_rtc_read_time(struct device *dev, struct rtc_time *time)
{
unsigned long epoch_sec, elapsed_sec;

- epoch_sec = mktime(epoch, 1, 1, 0, 0, 0);
+ epoch_sec = mktime_unsafe(epoch, 1, 1, 0, 0, 0);
elapsed_sec = read_elapsed_second();

rtc_time_to_tm(epoch_sec + elapsed_sec, time);
@@ -152,8 +152,8 @@ static int vr41xx_rtc_set_time(struct device *dev, struct rtc_time *time)
{
unsigned long epoch_sec, current_sec;

- epoch_sec = mktime(epoch, 1, 1, 0, 0, 0);
- current_sec = mktime(time->tm_year + 1900, time->tm_mon + 1, time->tm_mday,
+ epoch_sec = mktime_unsafe(epoch, 1, 1, 0, 0, 0);
+ current_sec = mktime_unsafe(time->tm_year + 1900, time->tm_mon + 1, time->tm_mday,
time->tm_hour, time->tm_min, time->tm_sec);

write_elapsed_second(current_sec - epoch_sec);
@@ -185,7 +185,7 @@ static int vr41xx_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
unsigned long alarm_sec;
struct rtc_time *time = &wkalrm->time;

- alarm_sec = mktime(time->tm_year + 1900, time->tm_mon + 1, time->tm_mday,
+ alarm_sec = mktime_unsafe(time->tm_year + 1900, time->tm_mon + 1, time->tm_mday,
time->tm_hour, time->tm_min, time->tm_sec);

spin_lock_irq(&rtc_lock);
diff --git a/include/linux/time.h b/include/linux/time.h
index 8c42cf8..e49d421 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -39,9 +39,9 @@ static inline int timeval_compare(const struct timeval *lhs, const struct timeva
return lhs->tv_usec - rhs->tv_usec;
}

-extern unsigned long mktime(const unsigned int year, const unsigned int mon,
- const unsigned int day, const unsigned int hour,
- const unsigned int min, const unsigned int sec);
+extern unsigned long mktime_unsafe(const unsigned int year, const unsigned int mon,
+ const unsigned int day, const unsigned int hour,
+ const unsigned int min, const unsigned int sec);

extern void set_normalized_timespec(struct timespec *ts, time_t sec, s64 nsec);

diff --git a/kernel/time/time.c b/kernel/time/time.c
index a9ae20f..d6a4464 100644
--- a/kernel/time/time.c
+++ b/kernel/time/time.c
@@ -320,7 +320,7 @@ EXPORT_SYMBOL(timespec_trunc);
* will already get problems at other places on 2038-01-19 03:14:08)
*/
unsigned long
-mktime(const unsigned int year0, const unsigned int mon0,
+mktime_unsafe(const unsigned int year0, const unsigned int mon0,
const unsigned int day, const unsigned int hour,
const unsigned int min, const unsigned int sec)
{
@@ -340,7 +340,7 @@ mktime(const unsigned int year0, const unsigned int mon0,
)*60 + sec; /* finally seconds */
}

-EXPORT_SYMBOL(mktime);
+EXPORT_SYMBOL(mktime_unsafe);

/**
* set_normalized_timespec - set timespec sec and nsec parts and normalize
--
1.7.9.5


\
 
 \ /
  Last update: 2014-10-27 07:21    [W:0.077 / U:0.408 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site