On Fri 2018-04-06 17:34:20, Josh Poimboeuf wrote: > On Thu, Apr 05, 2018 at 02:23:14PM +0200, Petr Mladek wrote: > > @@ -150,6 +149,23 @@ static void *__klp_shadow_get_or_alloc(void *obj, unsigned long id, void *data, > > goto exists; > > } > > > > + new_shadow->obj = obj; > > + new_shadow->id = id; > > + > > + if (ctor) { > > + int err; > > + > > + err = ctor(obj, new_shadow->data, ctor_data); > > + if (err) { > > + spin_unlock_irqrestore(&klp_shadow_lock, flags); > > + kfree(new_shadow); > > + WARN(1, > > + "Failed to construct shadow variable <%p, %lx>\n", > > + obj, id); > > + return NULL; > > + } > > + } > > + > > I'm not sure why a constructor would return an error, though I guess it > doesn't hurt to allow it. It is true that constructors usually do not return an error code, namely C++ or Java. But it is not true that they could not fail. These languages use exceptions instead. IMHO, the return value makes sense here. > The WARN seems excessive though, IMO. The constructor itself can warn > (or printk or whatever else) if it thinks its warranted. I am just fascinated by WARN(). But you are right. I am going to replace it with pr_err("Failed to construct shadow variable <%p, %lx> (%d)\n", obj, id, err); > Also I think the 'err' variable isn't really needed. Yup. Well, it will be needed by the pr_err() ;-) Best Regard, Petr -- To unsubscribe from this list: send the line "unsubscribe live-patching" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html