livepatch: Correctly call klp_post_unpatch_callback() in error paths
[sfrench/cifs-2.6.git] / kernel / livepatch / core.h
index 6fc907b54e716f40164e48118a80b8674c9ca658..cc3aa708e0b4403deab81eb6a0dcfdc5964e0f54 100644 (file)
@@ -12,10 +12,10 @@ static inline bool klp_is_object_loaded(struct klp_object *obj)
 
 static inline int klp_pre_patch_callback(struct klp_object *obj)
 {
-       int ret;
+       int ret = 0;
 
-       ret = (obj->callbacks.pre_patch) ?
-               (*obj->callbacks.pre_patch)(obj) : 0;
+       if (obj->callbacks.pre_patch)
+               ret = (*obj->callbacks.pre_patch)(obj);
 
        obj->callbacks.post_unpatch_enabled = !ret;
 
@@ -39,6 +39,8 @@ static inline void klp_post_unpatch_callback(struct klp_object *obj)
        if (obj->callbacks.post_unpatch_enabled &&
            obj->callbacks.post_unpatch)
                (*obj->callbacks.post_unpatch)(obj);
+
+       obj->callbacks.post_unpatch_enabled = false;
 }
 
 #endif /* _LIVEPATCH_CORE_H */