staging: vchiq_2835_arm: Fix NULL ptr dereference in free_pagelist

This fixes a NULL pointer dereference on RPi 2 with multi_v7_defconfig.
The function page_address() could return NULL with enabled CONFIG_HIGHMEM.
So fix this by using kmap() instead.

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Fixes: 71bad7f08641 ("staging: add bcm2708 vchiq driver")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by Stefan Wahren and committed by Greg Kroah-Hartman 974d4d03 e5f5d0e2

+4 -2
+4 -2
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
··· 612 612 if (head_bytes > actual) 613 613 head_bytes = actual; 614 614 615 - memcpy((char *)page_address(pages[0]) + 615 + memcpy((char *)kmap(pages[0]) + 616 616 pagelist->offset, 617 617 fragments, 618 618 head_bytes); 619 + kunmap(pages[0]); 619 620 } 620 621 if ((actual >= 0) && (head_bytes < actual) && 621 622 (tail_bytes != 0)) { 622 - memcpy((char *)page_address(pages[num_pages - 1]) + 623 + memcpy((char *)kmap(pages[num_pages - 1]) + 623 624 ((pagelist->offset + actual) & 624 625 (PAGE_SIZE - 1) & ~(g_cache_line_size - 1)), 625 626 fragments + g_cache_line_size, 626 627 tail_bytes); 628 + kunmap(pages[num_pages - 1]); 627 629 } 628 630 629 631 down(&g_free_fragments_mutex);