git.openpandora.org
/
pandora-kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
989e503
)
staging: ion: fix corruption of ion_import_dma_buf
author
Shawn Lin
<shawn.lin@rock-chips.com>
Wed, 9 Sep 2015 07:41:52 +0000
(15:41 +0800)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Thu, 17 Sep 2015 13:11:04 +0000
(06:11 -0700)
we found this issue but still exit in lastest kernel. Simply
keep ion_handle_create under mutex_lock to avoid this race.
WARNING: CPU: 2 PID: 2648 at drivers/staging/android/ion/ion.c:512 ion_handle_add+0xb4/0xc0()
ion_handle_add: buffer already found.
Modules linked in: iwlmvm iwlwifi mac80211 cfg80211 compat
CPU: 2 PID: 2648 Comm: TimedEventQueue Tainted: G W 3.14.0 #7
00000000
00000000
9a3efd2c
80faf273
9a3efd6c
9a3efd5c
80935dc9
811d7fd3
9a3efd88
00000a58
812208a0
00000200
80e128d4
80e128d4
8d4ae00c
a8cd8600
a8cd8094
9a3efd74
80935e0e
00000009
9a3efd6c
811d7fd3
9a3efd88
9a3efd9c
Call Trace:
[<
80faf273
>] dump_stack+0x48/0x69
[<
80935dc9
>] warn_slowpath_common+0x79/0x90
[<
80e128d4
>] ? ion_handle_add+0xb4/0xc0
[<
80e128d4
>] ? ion_handle_add+0xb4/0xc0
[<
80935e0e
>] warn_slowpath_fmt+0x2e/0x30
[<
80e128d4
>] ion_handle_add+0xb4/0xc0
[<
80e144cc
>] ion_import_dma_buf+0x8c/0x110
[<
80c517c4
>] reg_init+0x364/0x7d0
[<
80993363
>] ? futex_wait+0x123/0x210
[<
80992e0e
>] ? get_futex_key+0x16e/0x1e0
[<
8099308f
>] ? futex_wake+0x5f/0x120
[<
80c51e19
>] vpu_service_ioctl+0x1e9/0x500
[<
80994aec
>] ? do_futex+0xec/0x8e0
[<
80971080
>] ? prepare_to_wait_event+0xc0/0xc0
[<
80c51c30
>] ? reg_init+0x7d0/0x7d0
[<
80a22562
>] do_vfs_ioctl+0x2d2/0x4c0
[<
80b198ad
>] ? inode_has_perm.isra.41+0x2d/0x40
[<
80b199cf
>] ? file_has_perm+0x7f/0x90
[<
80b1a5f7
>] ? selinux_file_ioctl+0x47/0xf0
[<
80a227a8
>] SyS_ioctl+0x58/0x80
[<
80fb45e8
>] syscall_call+0x7/0x7
[<
80fb0000
>] ? mmc_do_calc_max_discard+0xab/0xe4
Fixes:
83271f626
("ion: hold reference to handle...")
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Reviewed-by: Laura Abbott <labbott@redhat.com>
Cc: stable <stable@vger.kernel.org> # 3.14+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/android/ion/ion.c
patch
|
blob
|
history
diff --git
a/drivers/staging/android/ion/ion.c
b/drivers/staging/android/ion/ion.c
index
217aa53
..
6e8d839
100644
(file)
--- a/
drivers/staging/android/ion/ion.c
+++ b/
drivers/staging/android/ion/ion.c
@@
-1179,13
+1179,13
@@
struct ion_handle *ion_import_dma_buf(struct ion_client *client, int fd)
mutex_unlock(&client->lock);
goto end;
}
- mutex_unlock(&client->lock);
handle = ion_handle_create(client, buffer);
- if (IS_ERR(handle))
+ if (IS_ERR(handle)) {
+ mutex_unlock(&client->lock);
goto end;
+ }
- mutex_lock(&client->lock);
ret = ion_handle_add(client, handle);
mutex_unlock(&client->lock);
if (ret) {