msm: adsprpc: Fix integer overflow in refcount of map

Integer overflow in refcount of map is leading to use after free. Error
out if refcount reaches INT_MAX.

Change-Id: I21e88361a8e70ef8c5c9593f1fc0ddd2b351a55a
Acked-by: Himateja Reddy <hmreddy@qti.qualcomm.com>
Signed-off-by: Tharun Kumar Merugu <mtharu@codeaurora.org>
This commit is contained in:
c_mtharu 2019-09-17 12:52:12 +05:30
parent 6e94fb15c8
commit fab8f054af

View file

@ -479,6 +479,10 @@ static int fastrpc_mmap_find(struct fastrpc_file *fl, int fd, uintptr_t va,
if (va >= map->va &&
va + len <= map->va + map->len &&
map->fd == fd) {
if (map->refs + 1 == INT_MAX) {
spin_unlock(&me->hlock);
return -ETOOMANYREFS;
}
map->refs++;
match = map;
break;
@ -491,6 +495,10 @@ static int fastrpc_mmap_find(struct fastrpc_file *fl, int fd, uintptr_t va,
if (va >= map->va &&
va + len <= map->va + map->len &&
map->fd == fd) {
if (map->refs + 1 == INT_MAX) {
spin_unlock(&fl->hlock);
return -ETOOMANYREFS;
}
map->refs++;
match = map;
break;