[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87k0rm8lmh.fsf@nanos.tec.linutronix.de>
Date: Fri, 05 Feb 2021 18:33:58 +0100
From: Thomas Gleixner <tglx@...utronix.de>
To: Yejune Deng <yejune.deng@...il.com>, john.stultz@...aro.org,
sboyd@...nel.org
Cc: linux-kernel@...r.kernel.org, yejune.deng@...il.com
Subject: Re: [PATCH] ntp: use memset and offsetof init
On Wed, Jan 20 2021 at 10:51, Yejune Deng wrote:
> In pps_fill_timex(), use memset and offsetof instead of '= 0'.
>
> Signed-off-by: Yejune Deng <yejune.deng@...il.com>
> ---
> kernel/time/ntp.c | 13 +++++--------
> 1 file changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
> index 87389b9e21ab..3416c0381104 100644
> --- a/kernel/time/ntp.c
> +++ b/kernel/time/ntp.c
> @@ -225,14 +225,11 @@ static inline int is_error_status(int status)
> static inline void pps_fill_timex(struct __kernel_timex *txc)
> {
> /* PPS is not implemented, so these are zero */
> - txc->ppsfreq = 0;
> - txc->jitter = 0;
> - txc->shift = 0;
> - txc->stabil = 0;
> - txc->jitcnt = 0;
> - txc->calcnt = 0;
> - txc->errcnt = 0;
> - txc->stbcnt = 0;
> + int offset, len;
> +
> + offset = offsetof(struct __kernel_timex, ppsfreq);
> + len = offsetof(struct __kernel_timex, tai) - offset;
> + memset(txc + offset, 0, len);
That zeros bytes at a memory location which is
(offset) * sizeof(struct __kernel_timex)
bytes away from txc. How did this every boot?
And no, even if you fix that pointer math problem then this kind of
calculation from the middle of a struct is error prone.
Thanks,
tglx
Powered by blists - more mailing lists