lkml.org 
[lkml]   [2018]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 12/16] y2038: ipc: Use ktime_get_real_seconds consistently
    Date
    In some places, we still used get_seconds() instead of
    ktime_get_real_seconds(), and I'm changing the remaining ones now to
    all use ktime_get_real_seconds() so we use the full available range for
    timestamps instead of overflowing the 'unsigned long' return value in
    year 2106 on 32-bit kernels.

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    ---
    ipc/msg.c | 6 +++---
    ipc/sem.c | 6 +++---
    2 files changed, 6 insertions(+), 6 deletions(-)

    diff --git a/ipc/msg.c b/ipc/msg.c
    index 56fd1c73eedc..574f76c9a2ff 100644
    --- a/ipc/msg.c
    +++ b/ipc/msg.c
    @@ -758,7 +758,7 @@ static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg,
    WRITE_ONCE(msr->r_msg, ERR_PTR(-E2BIG));
    } else {
    ipc_update_pid(&msq->q_lrpid, task_pid(msr->r_tsk));
    - msq->q_rtime = get_seconds();
    + msq->q_rtime = ktime_get_real_seconds();

    wake_q_add(wake_q, msr->r_tsk);
    WRITE_ONCE(msr->r_msg, msg);
    @@ -859,7 +859,7 @@ static long do_msgsnd(int msqid, long mtype, void __user *mtext,
    }

    ipc_update_pid(&msq->q_lspid, task_tgid(current));
    - msq->q_stime = get_seconds();
    + msq->q_stime = ktime_get_real_seconds();

    if (!pipelined_send(msq, msg, &wake_q)) {
    /* no one is waiting for this message, enqueue it */
    @@ -1087,7 +1087,7 @@ static long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp, in

    list_del(&msg->m_list);
    msq->q_qnum--;
    - msq->q_rtime = get_seconds();
    + msq->q_rtime = ktime_get_real_seconds();
    ipc_update_pid(&msq->q_lrpid, task_tgid(current));
    msq->q_cbytes -= msg->m_ts;
    atomic_sub(msg->m_ts, &ns->msg_bytes);
    diff --git a/ipc/sem.c b/ipc/sem.c
    index 06be75d9217a..c6a8a971769d 100644
    --- a/ipc/sem.c
    +++ b/ipc/sem.c
    @@ -104,7 +104,7 @@ struct sem {
    /* that alter the semaphore */
    struct list_head pending_const; /* pending single-sop operations */
    /* that do not alter the semaphore*/
    - time_t sem_otime; /* candidate for sem_otime */
    + time64_t sem_otime; /* candidate for sem_otime */
    } ____cacheline_aligned_in_smp;

    /* One sem_array data structure for each set of semaphores in the system. */
    @@ -984,10 +984,10 @@ static int update_queue(struct sem_array *sma, int semnum, struct wake_q_head *w
    static void set_semotime(struct sem_array *sma, struct sembuf *sops)
    {
    if (sops == NULL) {
    - sma->sems[0].sem_otime = get_seconds();
    + sma->sems[0].sem_otime = ktime_get_real_seconds();
    } else {
    sma->sems[sops[0].sem_num].sem_otime =
    - get_seconds();
    + ktime_get_real_seconds();
    }
    }

    --
    2.9.0
    \
     
     \ /
      Last update: 2018-04-25 17:09    [W:4.181 / U:0.256 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site