efi/x86: Add a quirk to support command line arguments on Dell EFI firmware
[linux-2.6-microblaze.git] / kernel / auditsc.c
index fd840c4..8dba8f0 100644 (file)
@@ -75,6 +75,7 @@
 #include <linux/uaccess.h>
 #include <linux/fsnotify_backend.h>
 #include <uapi/linux/limits.h>
+#include <uapi/linux/netfilter/nf_tables.h>
 
 #include "audit.h"
 
@@ -136,9 +137,26 @@ struct audit_nfcfgop_tab {
 };
 
 static const struct audit_nfcfgop_tab audit_nfcfgs[] = {
-       { AUDIT_XT_OP_REGISTER,         "register"      },
-       { AUDIT_XT_OP_REPLACE,          "replace"       },
-       { AUDIT_XT_OP_UNREGISTER,       "unregister"    },
+       { AUDIT_XT_OP_REGISTER,                 "xt_register"              },
+       { AUDIT_XT_OP_REPLACE,                  "xt_replace"               },
+       { AUDIT_XT_OP_UNREGISTER,               "xt_unregister"            },
+       { AUDIT_NFT_OP_TABLE_REGISTER,          "nft_register_table"       },
+       { AUDIT_NFT_OP_TABLE_UNREGISTER,        "nft_unregister_table"     },
+       { AUDIT_NFT_OP_CHAIN_REGISTER,          "nft_register_chain"       },
+       { AUDIT_NFT_OP_CHAIN_UNREGISTER,        "nft_unregister_chain"     },
+       { AUDIT_NFT_OP_RULE_REGISTER,           "nft_register_rule"        },
+       { AUDIT_NFT_OP_RULE_UNREGISTER,         "nft_unregister_rule"      },
+       { AUDIT_NFT_OP_SET_REGISTER,            "nft_register_set"         },
+       { AUDIT_NFT_OP_SET_UNREGISTER,          "nft_unregister_set"       },
+       { AUDIT_NFT_OP_SETELEM_REGISTER,        "nft_register_setelem"     },
+       { AUDIT_NFT_OP_SETELEM_UNREGISTER,      "nft_unregister_setelem"   },
+       { AUDIT_NFT_OP_GEN_REGISTER,            "nft_register_gen"         },
+       { AUDIT_NFT_OP_OBJ_REGISTER,            "nft_register_obj"         },
+       { AUDIT_NFT_OP_OBJ_UNREGISTER,          "nft_unregister_obj"       },
+       { AUDIT_NFT_OP_OBJ_RESET,               "nft_reset_obj"            },
+       { AUDIT_NFT_OP_FLOWTABLE_REGISTER,      "nft_register_flowtable"   },
+       { AUDIT_NFT_OP_FLOWTABLE_UNREGISTER,    "nft_unregister_flowtable" },
+       { AUDIT_NFT_OP_INVALID,                 "nft_invalid"              },
 };
 
 static int audit_match_perm(struct audit_context *ctx, int mask)
@@ -1876,6 +1894,20 @@ __audit_reusename(const __user char *uptr)
        return NULL;
 }
 
+inline void _audit_getcwd(struct audit_context *context)
+{
+       if (!context->pwd.dentry)
+               get_fs_pwd(current->fs, &context->pwd);
+}
+
+void __audit_getcwd(void)
+{
+       struct audit_context *context = audit_context();
+
+       if (context->in_syscall)
+               _audit_getcwd(context);
+}
+
 /**
  * __audit_getname - add a name to the list
  * @name: name to add
@@ -1900,8 +1932,7 @@ void __audit_getname(struct filename *name)
        name->aname = n;
        name->refcnt++;
 
-       if (!context->pwd.dentry)
-               get_fs_pwd(current->fs, &context->pwd);
+       _audit_getcwd(context);
 }
 
 static inline int audit_copy_fcaps(struct audit_names *name,
@@ -2557,12 +2588,12 @@ void __audit_ntp_log(const struct audit_ntp_data *ad)
 }
 
 void __audit_log_nfcfg(const char *name, u8 af, unsigned int nentries,
-                      enum audit_nfcfgop op)
+                      enum audit_nfcfgop op, gfp_t gfp)
 {
        struct audit_buffer *ab;
        char comm[sizeof(current->comm)];
 
-       ab = audit_log_start(audit_context(), GFP_KERNEL, AUDIT_NETFILTER_CFG);
+       ab = audit_log_start(audit_context(), gfp, AUDIT_NETFILTER_CFG);
        if (!ab)
                return;
        audit_log_format(ab, "table=%s family=%u entries=%u op=%s",