From: Rasmus Villemoes Date: Wed, 14 Sep 2016 22:25:03 +0000 (+0200) Subject: fs/aio.c: eliminate redundant loads in put_aio_ring_file X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=de04e76935ad5985d318fbce298a17e9dd2092b7;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git fs/aio.c: eliminate redundant loads in put_aio_ring_file Using a local variable we can prevent gcc from reloading aio_ring_file->f_inode->i_mapping twice, eliminating 2x2 dependent loads. Signed-off-by: Rasmus Villemoes Signed-off-by: Al Viro --- diff --git a/fs/aio.c b/fs/aio.c index 4fe81d1c60f9..1157e13a36d6 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -274,14 +274,17 @@ __initcall(aio_setup); static void put_aio_ring_file(struct kioctx *ctx) { struct file *aio_ring_file = ctx->aio_ring_file; + struct address_space *i_mapping; + if (aio_ring_file) { truncate_setsize(aio_ring_file->f_inode, 0); /* Prevent further access to the kioctx from migratepages */ - spin_lock(&aio_ring_file->f_inode->i_mapping->private_lock); - aio_ring_file->f_inode->i_mapping->private_data = NULL; + i_mapping = aio_ring_file->f_inode->i_mapping; + spin_lock(&i_mapping->private_lock); + i_mapping->private_data = NULL; ctx->aio_ring_file = NULL; - spin_unlock(&aio_ring_file->f_inode->i_mapping->private_lock); + spin_unlock(&i_mapping->private_lock); fput(aio_ring_file); }