You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'master' into next
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include <linux/list.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
|
||||
+2
-2
@@ -161,13 +161,13 @@ static int create_by_name(const char *name, mode_t mode,
|
||||
|
||||
mutex_lock(&parent->d_inode->i_mutex);
|
||||
*dentry = lookup_one_len(name, parent, strlen(name));
|
||||
if (!IS_ERR(dentry)) {
|
||||
if (!IS_ERR(*dentry)) {
|
||||
if ((mode & S_IFMT) == S_IFDIR)
|
||||
error = mkdir(parent->d_inode, *dentry, mode);
|
||||
else
|
||||
error = create(parent->d_inode, *dentry, mode);
|
||||
} else
|
||||
error = PTR_ERR(dentry);
|
||||
error = PTR_ERR(*dentry);
|
||||
mutex_unlock(&parent->d_inode->i_mutex);
|
||||
|
||||
return error;
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
* and store_template.
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include "ima.h"
|
||||
static const char *IMA_TEMPLATE_NAME = "ima";
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/fs.h>
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/audit.h>
|
||||
#include "ima.h"
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/crypto.h>
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/slab.h>
|
||||
#include "ima.h"
|
||||
|
||||
static int init_desc(struct hash_desc *desc)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
* current measurement list and IMA statistics
|
||||
*/
|
||||
#include <linux/fcntl.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/rculist.h>
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
* - cache integrity information associated with an inode
|
||||
* using a radix tree.
|
||||
*/
|
||||
#include <linux/slab.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/radix-tree.h>
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/err.h>
|
||||
#include "ima.h"
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <linux/binfmts.h>
|
||||
#include <linux/mount.h>
|
||||
#include <linux/mman.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include "ima.h"
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <linux/security.h>
|
||||
#include <linux/magic.h>
|
||||
#include <linux/parser.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include "ima.h"
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/rculist.h>
|
||||
#include <linux/slab.h>
|
||||
#include "ima.h"
|
||||
|
||||
LIST_HEAD(ima_measurements); /* list of all measurements */
|
||||
|
||||
+6
-3
@@ -77,10 +77,10 @@ static bool key_gc_keyring(struct key *keyring, time_t limit)
|
||||
goto dont_gc;
|
||||
|
||||
/* scan the keyring looking for dead keys */
|
||||
klist = rcu_dereference_check(keyring->payload.subscriptions,
|
||||
lockdep_is_held(&key_serial_lock));
|
||||
rcu_read_lock();
|
||||
klist = rcu_dereference(keyring->payload.subscriptions);
|
||||
if (!klist)
|
||||
goto dont_gc;
|
||||
goto unlock_dont_gc;
|
||||
|
||||
for (loop = klist->nkeys - 1; loop >= 0; loop--) {
|
||||
key = klist->keys[loop];
|
||||
@@ -89,11 +89,14 @@ static bool key_gc_keyring(struct key *keyring, time_t limit)
|
||||
goto do_gc;
|
||||
}
|
||||
|
||||
unlock_dont_gc:
|
||||
rcu_read_unlock();
|
||||
dont_gc:
|
||||
kleave(" = false");
|
||||
return false;
|
||||
|
||||
do_gc:
|
||||
rcu_read_unlock();
|
||||
key_gc_cursor = keyring->serial;
|
||||
key_get(keyring);
|
||||
spin_unlock(&key_serial_lock);
|
||||
|
||||
@@ -199,7 +199,7 @@ static long keyring_read(const struct key *keyring,
|
||||
int loop, ret;
|
||||
|
||||
ret = 0;
|
||||
klist = rcu_dereference(keyring->payload.subscriptions);
|
||||
klist = keyring->payload.subscriptions;
|
||||
|
||||
if (klist) {
|
||||
/* calculate how much data we could return */
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/seq_file.h>
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/keyctl.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/err.h>
|
||||
|
||||
@@ -68,7 +68,8 @@ static int call_sbin_request_key(struct key_construction *cons,
|
||||
{
|
||||
const struct cred *cred = current_cred();
|
||||
key_serial_t prkey, sskey;
|
||||
struct key *key = cons->key, *authkey = cons->authkey, *keyring;
|
||||
struct key *key = cons->key, *authkey = cons->authkey, *keyring,
|
||||
*session;
|
||||
char *argv[9], *envp[3], uid_str[12], gid_str[12];
|
||||
char key_str[12], keyring_str[3][12];
|
||||
char desc[20];
|
||||
@@ -112,10 +113,12 @@ static int call_sbin_request_key(struct key_construction *cons,
|
||||
if (cred->tgcred->process_keyring)
|
||||
prkey = cred->tgcred->process_keyring->serial;
|
||||
|
||||
if (cred->tgcred->session_keyring)
|
||||
sskey = rcu_dereference(cred->tgcred->session_keyring)->serial;
|
||||
else
|
||||
sskey = cred->user->session_keyring->serial;
|
||||
rcu_read_lock();
|
||||
session = rcu_dereference(cred->tgcred->session_keyring);
|
||||
if (!session)
|
||||
session = cred->user->session_keyring;
|
||||
sskey = session->serial;
|
||||
rcu_read_unlock();
|
||||
|
||||
sprintf(keyring_str[2], "%d", sskey);
|
||||
|
||||
@@ -336,8 +339,10 @@ static int construct_alloc_key(struct key_type *type,
|
||||
|
||||
key_already_present:
|
||||
mutex_unlock(&key_construction_mutex);
|
||||
if (dest_keyring)
|
||||
if (dest_keyring) {
|
||||
__key_link(dest_keyring, key_ref_to_ptr(key_ref));
|
||||
up_write(&dest_keyring->sem);
|
||||
}
|
||||
mutex_unlock(&user->cons_lock);
|
||||
key_put(key);
|
||||
*_key = key = key_ref_to_ptr(key_ref);
|
||||
@@ -428,6 +433,11 @@ struct key *request_key_and_link(struct key_type *type,
|
||||
|
||||
if (!IS_ERR(key_ref)) {
|
||||
key = key_ref_to_ptr(key_ref);
|
||||
if (dest_keyring) {
|
||||
construct_get_dest_keyring(&dest_keyring);
|
||||
key_link(dest_keyring, key);
|
||||
key_put(dest_keyring);
|
||||
}
|
||||
} else if (PTR_ERR(key_ref) != -EAGAIN) {
|
||||
key = ERR_CAST(key_ref);
|
||||
} else {
|
||||
|
||||
@@ -199,7 +199,8 @@ long user_read(const struct key *key, char __user *buffer, size_t buflen)
|
||||
struct user_key_payload *upayload;
|
||||
long ret;
|
||||
|
||||
upayload = rcu_dereference(key->payload.data);
|
||||
upayload = rcu_dereference_protected(
|
||||
key->payload.data, rwsem_is_locked(&((struct key *)key)->sem));
|
||||
ret = upayload->datalen;
|
||||
|
||||
/* we can return the data as is */
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/init.h>
|
||||
#include <net/sock.h>
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/list.h>
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/ip.h>
|
||||
#include <linux/ipv6.h>
|
||||
#include <net/sock.h>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user