lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20231130171126.GH32077@kernel.org> Date: Thu, 30 Nov 2023 17:11:26 +0000 From: Simon Horman <horms@...nel.org> To: Min Li <lnimi@...mail.com> Cc: richardcochran@...il.com, lee@...nel.org, linux-kernel@...r.kernel.org, netdev@...r.kernel.org, Min Li <min.li.xe@...esas.com> Subject: Re: [PATCH net-next v2 2/2] ptp: add FemtoClock3 Wireless as ptp hardware clock On Wed, Nov 29, 2023 at 03:48:06PM -0500, Min Li wrote: > From: Min Li <min.li.xe@...esas.com> > > The RENESAS FemtoClock3 Wireless is a high-performance jitter attenuator, > frequency translator, and clock synthesizer. The device is comprised of 3 > digital PLLs (DPLL) to track CLKIN inputs and three independent low phase > noise fractional output dividers (FOD) that output low phase noise clocks. > > FemtoClock3 supports one Time Synchronization (Time Sync) channel to enable > an external processor to control the phase and frequency of the Time Sync > channel and to take phase measurements using the TDC. Intended applications > are synchronization using the precision time protocol (PTP) and > synchronization with 0.5 Hz and 1 Hz signals from GNSS. > > Signed-off-by: Min Li <min.li.xe@...esas.com> Hi Min Li, some minor feedback from my side. ... > diff --git a/drivers/ptp/Makefile b/drivers/ptp/Makefile ... > +static inline s64 ns2counters(struct idtfc3 *idtfc3, s64 nsec, u32 *sub_ns) > +{ > + s64 sync; > + s32 rem; > + > + if (likely(nsec > 0)) { > + sync = div_u64_rem(nsec, idtfc3->ns_per_sync, &rem); > + *sub_ns = rem; > + } else if (nsec < 0) { > + sync = -div_u64_rem(-nsec - 1, idtfc3->ns_per_sync, &rem) - 1; > + *sub_ns = idtfc3->ns_per_sync - rem - 1; > + } > + > + return sync * idtfc3->ns_per_sync; Perhaps it cannot occur, but if nsec is exactly 0, then sync is uninitialised here. Flagged by clang-17 W=1 build, and Smatch. > +} ... > +static int _idtfc3_settime(struct idtfc3 *idtfc3, const struct timespec64 *ts) > +{ > + s64 offset_ns, now_ns, sync_ns; > + u32 counter, sub_ns; > + int now; > + > + if (timespec64_valid(ts) == false) { > + dev_err(idtfc3->dev, "%s: invalid timespec", __func__); > + return -EINVAL; > + } > + > + now = idtfc3_read_subcounter(idtfc3); > + if (now < 0) > + return now; > + > + offset_ns = (idtfc3->sub_sync_count - now) * idtfc3->ns_per_counter; > + now_ns = timespec64_to_ns(ts); > + sync_ns = ns2counters(idtfc3, offset_ns + now_ns, &sub_ns); sync_ns is set here but otherwise unused. Perhaps the assignment can be dropped and sync_ns removed from this function? As flagged by gcc-13 W=1 build and Smatch. > + > + counter = sub_ns / idtfc3->ns_per_counter; > + return idtfc3_timecounter_update(idtfc3, counter, now_ns); > +} ...
Powered by blists - more mailing lists