Merge branch 'master' into next
Conflicts: fs/namei.c Manually merged per: diff --cc fs/namei.c index 734f2b5,bbc15c2..0000000 --- a/fs/namei.c +++ b/fs/namei.c @@@ -860,9 -848,8 +849,10 @@@ static int __link_path_walk(const char nd->flags |= LOOKUP_CONTINUE; err = exec_permission_lite(inode); if (err == -EAGAIN) - err = vfs_permission(nd, MAY_EXEC); + err = inode_permission(nd->path.dentry->d_inode, + MAY_EXEC); + if (!err) + err = ima_path_check(&nd->path, MAY_EXEC); if (err) break; @@@ -1525,14 -1506,9 +1509,14 @@@ int may_open(struct path *path, int acc flag &= ~O_TRUNC; } - error = vfs_permission(nd, acc_mode); + error = inode_permission(inode, acc_mode); if (error) return error; + - error = ima_path_check(&nd->path, ++ error = ima_path_check(path, + acc_mode & (MAY_READ | MAY_WRITE | MAY_EXEC)); + if (error) + return error; /* * An append-only file must be opened in append mode for writing. */ Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
@@ -23,8 +23,6 @@
|
||||
#include <linux/security.h>
|
||||
#include <linux/module.h>
|
||||
#include <acpi/acpi.h>
|
||||
#include <acpi/actypes.h>
|
||||
#include <acpi/actbl.h>
|
||||
#include "tpm.h"
|
||||
|
||||
#define TCG_EVENT_NAME_LEN_MAX 255
|
||||
|
@@ -273,12 +273,23 @@ static void tpm_nsc_remove(struct device *dev)
|
||||
}
|
||||
}
|
||||
|
||||
static struct device_driver nsc_drv = {
|
||||
.name = "tpm_nsc",
|
||||
.bus = &platform_bus_type,
|
||||
.owner = THIS_MODULE,
|
||||
.suspend = tpm_pm_suspend,
|
||||
.resume = tpm_pm_resume,
|
||||
static int tpm_nsc_suspend(struct platform_device *dev, pm_message_t msg)
|
||||
{
|
||||
return tpm_pm_suspend(&dev->dev, msg);
|
||||
}
|
||||
|
||||
static int tpm_nsc_resume(struct platform_device *dev)
|
||||
{
|
||||
return tpm_pm_resume(&dev->dev);
|
||||
}
|
||||
|
||||
static struct platform_driver nsc_drv = {
|
||||
.suspend = tpm_nsc_suspend,
|
||||
.resume = tpm_nsc_resume,
|
||||
.driver = {
|
||||
.name = "tpm_nsc",
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init init_nsc(void)
|
||||
@@ -297,7 +308,7 @@ static int __init init_nsc(void)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
err = driver_register(&nsc_drv);
|
||||
err = platform_driver_register(&nsc_drv);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -308,17 +319,15 @@ static int __init init_nsc(void)
|
||||
/* enable the DPM module */
|
||||
tpm_write_index(nscAddrBase, NSC_LDC_INDEX, 0x01);
|
||||
|
||||
pdev = kzalloc(sizeof(struct platform_device), GFP_KERNEL);
|
||||
pdev = platform_device_alloc("tpm_nscl0", -1);
|
||||
if (!pdev) {
|
||||
rc = -ENOMEM;
|
||||
goto err_unreg_drv;
|
||||
}
|
||||
|
||||
pdev->name = "tpm_nscl0";
|
||||
pdev->id = -1;
|
||||
pdev->num_resources = 0;
|
||||
pdev->dev.driver = &nsc_drv.driver;
|
||||
pdev->dev.release = tpm_nsc_remove;
|
||||
pdev->dev.driver = &nsc_drv;
|
||||
|
||||
if ((rc = platform_device_register(pdev)) < 0)
|
||||
goto err_free_dev;
|
||||
@@ -377,7 +386,7 @@ err_unreg_dev:
|
||||
err_free_dev:
|
||||
kfree(pdev);
|
||||
err_unreg_drv:
|
||||
driver_unregister(&nsc_drv);
|
||||
platform_driver_unregister(&nsc_drv);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -390,7 +399,7 @@ static void __exit cleanup_nsc(void)
|
||||
pdev = NULL;
|
||||
}
|
||||
|
||||
driver_unregister(&nsc_drv);
|
||||
platform_driver_unregister(&nsc_drv);
|
||||
}
|
||||
|
||||
module_init(init_nsc);
|
||||
|
Reference in New Issue
Block a user