OSDN Git Service

net: Fix skb->csum update in inet_proto_csum_replace16().
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / kernel / auditfilter.c
index b8ff9e1..cf7aa65 100644 (file)
@@ -406,7 +406,7 @@ static int audit_field_valid(struct audit_entry *entry, struct audit_field *f)
                        return -EINVAL;
                break;
        case AUDIT_EXE:
-               if (f->op != Audit_equal)
+               if (f->op != Audit_not_equal && f->op != Audit_equal)
                        return -EINVAL;
                if (entry->rule.listnr != AUDIT_FILTER_EXIT)
                        return -EINVAL;
@@ -1095,22 +1095,24 @@ int audit_rule_change(int type, __u32 portid, int seq, void *data,
        int err = 0;
        struct audit_entry *entry;
 
-       entry = audit_data_to_entry(data, datasz);
-       if (IS_ERR(entry))
-               return PTR_ERR(entry);
-
        switch (type) {
        case AUDIT_ADD_RULE:
+               entry = audit_data_to_entry(data, datasz);
+               if (IS_ERR(entry))
+                       return PTR_ERR(entry);
                err = audit_add_rule(entry);
                audit_log_rule_change("add_rule", &entry->rule, !err);
                break;
        case AUDIT_DEL_RULE:
+               entry = audit_data_to_entry(data, datasz);
+               if (IS_ERR(entry))
+                       return PTR_ERR(entry);
                err = audit_del_rule(entry);
                audit_log_rule_change("remove_rule", &entry->rule, !err);
                break;
        default:
-               err = -EINVAL;
                WARN_ON(1);
+               return -EINVAL;
        }
 
        if (err || type == AUDIT_DEL_RULE) {