Revision 9ecfe875c4f311618cc918aded716017dcd2ddf1 authored by Karicheri, Muralidharan on 19 February 2016, 17:58:42 UTC, committed by David S. Miller on 22 February 2016, 03:03:15 UTC
The commit 899077791403 ("netcp: try to reduce type confusion in
descriptors") introduces a regression in Kernel 4.5-rc1 and it breaks
get/set_pad_info() functionality.

The TI NETCP driver uses pad0 and pad1 fields of knav_dma_desc to
store DMA/MEM buffer pointer and buffer size respectively. And in both
cases for Keystone 2 the pointer type size is 32 bit regardless of
LAPE enabled or not, because CONFIG_ARCH_DMA_ADDR_T_64BIT originally
is not expected to be defined.

Unfortunately, above commit changed buffer's pointers save/restore
code (get/set_pad_info()) and added intermediate conversation to u64
which works incorrectly on 32bit Keystone 2 and causes TI NETCP driver
crash in RX/TX path due to "Unable to handle kernel NULL pointer"
exception. This issue was reported and discussed in [1].

Hence, fix it by partially reverting above commit and restoring
get/set_pad_info() functionality as it was before.

[1] https://www.mail-archive.com/netdev@vger.kernel.org/msg95361.html
Cc: Wingman Kwok <w-kwok2@ti.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
CC: David Laight <David.Laight@ACULAB.COM>
CC: Arnd Bergmann <arnd@arndb.de>
Reported-by: Franklin S Cooper Jr <fcooper@ti.com>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 3301be3
History
File Mode Size
Kconfig -rw-r--r-- 6.2 KB
Makefile -rw-r--r-- 667 bytes
alarmtimer.c -rw-r--r-- 21.5 KB
clockevents.c -rw-r--r-- 19.2 KB
clocksource.c -rw-r--r-- 27.6 KB
hrtimer.c -rw-r--r-- 46.9 KB
itimer.c -rw-r--r-- 7.3 KB
jiffies.c -rw-r--r-- 3.9 KB
ntp.c -rw-r--r-- 25.6 KB
ntp_internal.h -rw-r--r-- 536 bytes
posix-clock.c -rw-r--r-- 8.4 KB
posix-cpu-timers.c -rw-r--r-- 40.0 KB
posix-timers.c -rw-r--r-- 30.5 KB
sched_clock.c -rw-r--r-- 8.1 KB
test_udelay.c -rw-r--r-- 4.1 KB
tick-broadcast-hrtimer.c -rw-r--r-- 3.0 KB
tick-broadcast.c -rw-r--r-- 26.4 KB
tick-common.c -rw-r--r-- 13.5 KB
tick-internal.h -rw-r--r-- 7.0 KB
tick-oneshot.c -rw-r--r-- 3.2 KB
tick-sched.c -rw-r--r-- 29.6 KB
tick-sched.h -rw-r--r-- 2.4 KB
time.c -rw-r--r-- 19.9 KB
timeconst.bc -rw-r--r-- 2.7 KB
timeconv.c -rw-r--r-- 3.5 KB
timecounter.c -rw-r--r-- 3.0 KB
timekeeping.c -rw-r--r-- 56.2 KB
timekeeping.h -rw-r--r-- 740 bytes
timekeeping_debug.c -rw-r--r-- 1.9 KB
timekeeping_internal.h -rw-r--r-- 824 bytes
timer.c -rw-r--r-- 46.5 KB
timer_list.c -rw-r--r-- 9.6 KB
timer_stats.c -rw-r--r-- 10.0 KB

back to top