Richard Cochran <richardcoch...@gmail.com> writes: > On Mon, Jun 03, 2019 at 03:12:42PM +0300, Ido Schimmel wrote: >> +struct mlxsw_sp_ptp_clock * >> +mlxsw_sp1_ptp_clock_init(struct mlxsw_sp *mlxsw_sp, struct device *dev)
[...] >> + clock->ptp_info = mlxsw_sp1_ptp_clock_info; >> + clock->ptp = ptp_clock_register(&clock->ptp_info, dev); >> + if (IS_ERR(clock->ptp)) { >> + err = PTR_ERR(clock->ptp); >> + dev_err(dev, "ptp_clock_register failed %d\n", err); >> + goto err_ptp_clock_register; >> + } >> + >> + return clock; > > You need to handle the case where ptp_clock_register() returns NULL... > > /** > * ptp_clock_register() - register a PTP hardware clock driver > * > * @info: Structure describing the new clock. > * @parent: Pointer to the parent device of the new clock. > * > * Returns a valid pointer on success or PTR_ERR on failure. If PHC > * support is missing at the configuration level, this function > * returns NULL, and drivers are expected to gracefully handle that > * case separately. > */ We don't build the PTP module at all unless CONFIG_PTP_1588_CLOCK is enabled, and fall back to inline stubs unless it IS_REACHABLE. I believe this should be OK.