>From: Jiri Pirko <jiri@xxxxxxxxxxx> >Sent: Thursday, June 29, 2023 10:14 AM > >Fri, Jun 23, 2023 at 02:38:13PM CEST, arkadiusz.kubalewski@xxxxxxxxx wrote: >>From: Vadim Fedorenko <vadim.fedorenko@xxxxxxxxx> >> > >One thing I forgot to point out the last time: > >[...] > >>+int >>+dpll_pin_register(struct dpll_device *dpll, struct dpll_pin *pin, >>+ const struct dpll_pin_ops *ops, void *priv) >>+{ >>+ int ret; >>+ >>+ if (WARN_ON(!ops) || >>+ WARN_ON(!ops->state_on_dpll_get) || >>+ WARN_ON(!ops->direction_get)) > >Please add check that you don't register to dpll instance which is >unregistered. Similar check needs to be added to pin_on_pin register. > >Also, make sure you don't unregister dpll device/pin which has child >pins registered under it. > Fixed for v10. Thank you! Arkadiusz > >>+ return -EINVAL; >>+ >>+ mutex_lock(&dpll_lock); >>+ if (WARN_ON(!(dpll->module == pin->module && >>+ dpll->clock_id == pin->clock_id))) >>+ ret = -EINVAL; >>+ else >>+ ret = __dpll_pin_register(dpll, pin, ops, priv); >>+ mutex_unlock(&dpll_lock); >>+ >>+ return ret; >>+} > >[...]