Merge tag 'selinux-pr-20220801' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / security / selinux / ss / services.c
index 69b2734..fe5fcf5 100644 (file)
@@ -4048,6 +4048,7 @@ int security_read_policy(struct selinux_state *state,
 int security_read_state_kernel(struct selinux_state *state,
                               void **data, size_t *len)
 {
+       int err;
        struct selinux_policy *policy;
 
        policy = rcu_dereference_protected(
@@ -4060,5 +4061,11 @@ int security_read_state_kernel(struct selinux_state *state,
        if (!*data)
                return -ENOMEM;
 
-       return __security_read_policy(policy, *data, len);
+       err = __security_read_policy(policy, *data, len);
+       if (err) {
+               vfree(*data);
+               *data = NULL;
+               *len = 0;
+       }
+       return err;
 }