From 94067fbed81d8d7ad8aec3e2c3cd1e2b693ddab7 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 16 May 2010 11:11:31 -0700 Subject: [PATCH] --- yaml --- r: 190900 b: refs/heads/master c: d34e14f690d611ffe3db09e4ed8123d86c89a831 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/mmc/host/at91_mci.c | 2 +- trunk/fs/btrfs/ioctl.c | 5 +++++ trunk/lib/btree.c | 3 ++- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index faefeb630cc0..e7d31d3d6041 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4e73238d163c6fcf001264832701d2a6d4927672 +refs/heads/master: d34e14f690d611ffe3db09e4ed8123d86c89a831 diff --git a/trunk/drivers/mmc/host/at91_mci.c b/trunk/drivers/mmc/host/at91_mci.c index a6dd7da37357..336d9f553f3e 100644 --- a/trunk/drivers/mmc/host/at91_mci.c +++ b/trunk/drivers/mmc/host/at91_mci.c @@ -314,8 +314,8 @@ static void at91_mci_post_dma_read(struct at91mci_host *host) dmabuf = (unsigned *)tmpv; } + flush_kernel_dcache_page(sg_page(sg)); kunmap_atomic(sgbuffer, KM_BIO_SRC_IRQ); - dmac_flush_range((void *)sgbuffer, ((void *)sgbuffer) + amount); data->bytes_xfered += amount; if (size == 0) break; diff --git a/trunk/fs/btrfs/ioctl.c b/trunk/fs/btrfs/ioctl.c index e84ef60ffe35..97a97839a867 100644 --- a/trunk/fs/btrfs/ioctl.c +++ b/trunk/fs/btrfs/ioctl.c @@ -1481,12 +1481,17 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, ret = -EBADF; goto out_drop_write; } + src = src_file->f_dentry->d_inode; ret = -EINVAL; if (src == inode) goto out_fput; + /* the src must be open for reading */ + if (!(src_file->f_mode & FMODE_READ)) + goto out_fput; + ret = -EISDIR; if (S_ISDIR(src->i_mode) || S_ISDIR(inode->i_mode)) goto out_fput; diff --git a/trunk/lib/btree.c b/trunk/lib/btree.c index 41859a820218..c9c6f0351526 100644 --- a/trunk/lib/btree.c +++ b/trunk/lib/btree.c @@ -95,7 +95,8 @@ static unsigned long *btree_node_alloc(struct btree_head *head, gfp_t gfp) unsigned long *node; node = mempool_alloc(head->mempool, gfp); - memset(node, 0, NODESIZE); + if (likely(node)) + memset(node, 0, NODESIZE); return node; }