From 5d018dbdf5c7d0d7ebdc481b0f2d6389444bb3e0 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Tue, 28 Nov 2006 17:27:11 -0800 Subject: [PATCH] --- yaml --- r: 41111 b: refs/heads/master c: ef8d2f45c6dde22cef2eb38cb0e05edcd171a034 h: refs/heads/master i: 41109: 5837d47545798efc200a8aee8757273f96985f9d 41107: 9df07f38d23ccaffaf1f3e3042efb54edc52a1ab 41103: 6edd0dbb507bd59bfaec2d4981e340f745ccf6fb v: v3 --- [refs] | 2 +- trunk/arch/x86_64/kernel/early_printk.c | 2 +- trunk/drivers/mtd/chips/cfi_cmdset_0001.c | 2 +- trunk/fs/ecryptfs/crypto.c | 3 ++- trunk/include/scsi/libsas.h | 1 + trunk/kernel/kmod.c | 8 ++++---- trunk/net/bridge/br_ioctl.c | 9 +++++---- 7 files changed, 15 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index 7a2e9802f0e1..664a735847cb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 177b2927e2eea73c598a218680b4dc9043c51dcb +refs/heads/master: ef8d2f45c6dde22cef2eb38cb0e05edcd171a034 diff --git a/trunk/arch/x86_64/kernel/early_printk.c b/trunk/arch/x86_64/kernel/early_printk.c index e22ecd54870d..47b6d90349da 100644 --- a/trunk/arch/x86_64/kernel/early_printk.c +++ b/trunk/arch/x86_64/kernel/early_printk.c @@ -224,7 +224,7 @@ static int __init setup_early_printk(char *buf) return 0; early_console_initialized = 1; - if (!strcmp(buf,"keep")) + if (strstr(buf, "keep")) keep_early = 1; if (!strncmp(buf, "serial", 6)) { diff --git a/trunk/drivers/mtd/chips/cfi_cmdset_0001.c b/trunk/drivers/mtd/chips/cfi_cmdset_0001.c index 7ea49a0d5ec3..296159ec5189 100644 --- a/trunk/drivers/mtd/chips/cfi_cmdset_0001.c +++ b/trunk/drivers/mtd/chips/cfi_cmdset_0001.c @@ -1087,7 +1087,7 @@ static int inval_cache_and_wait_for_operation( } spin_lock(chip->mutex); - if (chip->state != chip_state) { + while (chip->state != chip_state) { /* Someone's suspended the operation: sleep */ DECLARE_WAITQUEUE(wait, current); set_current_state(TASK_UNINTERRUPTIBLE); diff --git a/trunk/fs/ecryptfs/crypto.c b/trunk/fs/ecryptfs/crypto.c index 136175a69332..f63a7755fe86 100644 --- a/trunk/fs/ecryptfs/crypto.c +++ b/trunk/fs/ecryptfs/crypto.c @@ -820,7 +820,8 @@ int ecryptfs_init_crypt_ctx(struct ecryptfs_crypt_stat *crypt_stat) crypt_stat->tfm = crypto_alloc_blkcipher(full_alg_name, 0, CRYPTO_ALG_ASYNC); kfree(full_alg_name); - if (!crypt_stat->tfm) { + if (IS_ERR(crypt_stat->tfm)) { + rc = PTR_ERR(crypt_stat->tfm); ecryptfs_printk(KERN_ERR, "cryptfs: init_crypt_ctx(): " "Error initializing cipher [%s]\n", crypt_stat->cipher); diff --git a/trunk/include/scsi/libsas.h b/trunk/include/scsi/libsas.h index 9582e8401669..1d77b63c5ea4 100644 --- a/trunk/include/scsi/libsas.h +++ b/trunk/include/scsi/libsas.h @@ -35,6 +35,7 @@ #include #include #include +#include struct block_device; diff --git a/trunk/kernel/kmod.c b/trunk/kernel/kmod.c index bb4e29d924e4..2b76dee28496 100644 --- a/trunk/kernel/kmod.c +++ b/trunk/kernel/kmod.c @@ -307,14 +307,14 @@ int call_usermodehelper_pipe(char *path, char **argv, char **envp, return 0; f = create_write_pipe(); - if (!f) - return -ENOMEM; + if (IS_ERR(f)) + return PTR_ERR(f); *filp = f; f = create_read_pipe(f); - if (!f) { + if (IS_ERR(f)) { free_write_pipe(*filp); - return -ENOMEM; + return PTR_ERR(f); } sub_info.stdin = f; diff --git a/trunk/net/bridge/br_ioctl.c b/trunk/net/bridge/br_ioctl.c index 4e4119a12139..4c61a7e0a86e 100644 --- a/trunk/net/bridge/br_ioctl.c +++ b/trunk/net/bridge/br_ioctl.c @@ -58,12 +58,13 @@ static int get_fdb_entries(struct net_bridge *br, void __user *userbuf, { int num; void *buf; - size_t size = maxnum * sizeof(struct __fdb_entry); + size_t size; - if (size > PAGE_SIZE) { - size = PAGE_SIZE; + /* Clamp size to PAGE_SIZE, test maxnum to avoid overflow */ + if (maxnum > PAGE_SIZE/sizeof(struct __fdb_entry)) maxnum = PAGE_SIZE/sizeof(struct __fdb_entry); - } + + size = maxnum * sizeof(struct __fdb_entry); buf = kmalloc(size, GFP_USER); if (!buf)