android_kernel_xiaomi_sdm845/drivers
Suresh Siddha d522af581c V4L/DVB (9356): [PATCH] saa7134: fix resource map sanity check conflict
Impact: driver could possibly stomp on resources outside of its scope

{mchehab@redhat.com: I got two versions of the same patch (identical,
except for whitespacing). One authored by Andy Burns and another
authored by Suresh Siddha. Due to that, I'm applying the one that has
less CodingStyle errors. I'm also adding both comments and the SOB's for
both patches, since they are both interesting}

Suresh Siddha commented:

  Alexey Fisher reported:

  > resource map sanity check conflict: 0xcfeff800 0xcff007ff 0xcfe00000
  > 0xcfefffff PCI Bus 0000:01

  BAR base is located in the middle of the 4K page and the hardcoded
  size argument makes the request span two pages causing the conflict.

  Fix the hard coded size argument in ioremap().

Andy Burns commented:

  I have already sent this patch on the linux-dvb list, but it didn't get
  much attention, so re-sending direct, I hope you all don't mind.

  While attempting to run mythtv in a xen domU, I encountered problems
  loading the driver for my saa7134 card, with an error from ioremap().

  This error was due to the driver allocating an incorrectly sized mmio
  area, which was trapped by xen's permission checks, but this would go
  un-noticed on a kernel without xen.

  My card has a 1K sized mmio area, I've had information that other cards
  have 2K areas, perhaps others have different sizes, yet the driver
  always attempts to map 4K.  I realise that the granularity of mapping is
  the page size, which typically would be 4K, but unless the card's base
  address happens to fall on a 4K boundary (mine does not) then the
  base+4K will end up spanning two pages, and this is when the error
  occurs under xen.

  My patch uses the pci_resource_len macro to determine the size required
  for the user's particular card, instead of the hardcoded 4K value. I've
  tested with a couple of printk() inside ioremap() that the start address
  and size do get rounded to the closest page boundary.

  With this patch I am able to successfully load the saa7134 driver and
  run mythtv under xen with my card, subject to correct pollirq settings
  in case of shared IRQ, I am still seeing occasional DMA panics, which I
  think are related to swiotlb handling by dom0/domU, usually the panic
  occurs when changing mux, once tuned to a mux, 12 hour continuous
  recordings are possible without errors.

Reported-by: Alexey Fisher <bug-track@fisher-privat.net>
Tested-by: Alexey Fisher <bug-track@fisher-privat.net>
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: Andy Burns <andy@burns.net>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-11-11 08:11:21 -02:00
..
accessibility
acpi ACPI suspend: build fix for ACPI_SLEEP=n && XEN_SAVE_RESTORE=y. 2008-10-25 04:07:13 -04:00
amba
ata libata: revert convert-to-block-tagging patches 2008-11-10 08:04:47 -08:00
atm
auxdisplay
base sysfs: Fix return values for sysdev_store_{ulong,int} 2008-10-29 15:03:49 -07:00
block cciss: fix regression firmware not displayed in procfs 2008-11-06 15:41:18 -08:00
bluetooth bpa10x: free sk_buff with kfree_skb 2008-10-31 00:40:19 -07:00
cdrom gdrom: Fix compile error 2008-10-28 17:46:02 +09:00
char vt: incomplete initialization of vc_tab_stop 2008-11-06 15:41:17 -08:00
clocksource Merge branches 'timers/clocksource', 'timers/hrtimers', 'timers/nohz', 'timers/ntp', 'timers/posixtimers' and 'timers/debug' into v28-timers-for-linus 2008-10-20 13:14:06 +02:00
connector
cpufreq
cpuidle regression: disable timer peek-ahead for 2.6.28 2008-11-09 16:28:42 -08:00
crypto
dca device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
dio
dma Merge branch 'i7300_idle' into release 2008-10-25 04:07:44 -04:00
edac edac: fix enabling of polling cell module 2008-10-30 11:38:46 -07:00
eisa
firewire firewire: struct device - replace bus_id with dev_name(), dev_set_name() 2008-10-31 08:48:25 +01:00
firmware trivial: dmi_scan typo 2008-11-07 08:25:43 -08:00
gpio mfd: twl4030-gpio driver 2008-10-22 01:19:39 +02:00
gpu Merge branch 'io-mappings-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-11-03 10:15:40 -08:00
hid V4L/DVB (9337a): HID: Don't allow KWorld radio fm700 be handled by usb hid drivers 2008-11-11 08:09:43 -02:00
hwmon hwmon: applesmc: add support for iMac 8 2008-11-06 15:41:17 -08:00
i2c i2c-s3c2410: Correct use of ! and & 2008-10-30 15:55:47 +01:00
ide ide-gd: re-get capacity on revalidate 2008-11-02 21:40:10 +01:00
idle i7300_idle: Cleanup based review comments 2008-10-24 12:55:14 -04:00
ieee1394 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2008-11-06 15:55:34 -08:00
infiniband saner FASYNC handling on file close 2008-11-01 09:49:46 -07:00
input saner FASYNC handling on file close 2008-11-01 09:49:46 -07:00
isdn device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
leds remove unused #include <version.h>'s 2008-11-01 09:50:12 -07:00
lguest
macintosh device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
mca
md md: linear: Fix a division by zero bug for very small arrays. 2008-11-06 19:41:24 +11:00
media V4L/DVB (9356): [PATCH] saa7134: fix resource map sanity check conflict 2008-11-11 08:11:21 -02:00
memstick [PATCH] switch memstick 2008-10-21 07:48:33 -04:00
message trivial: MPT fusion - remove long dead code 2008-11-07 08:25:43 -08:00
mfd missing dependencies on HAVE_CLK in drivers/mfd 2008-11-01 12:40:38 -07:00
misc remove unused #include <version.h>'s 2008-11-01 09:50:12 -07:00
mmc mmc: struct device - replace bus_id with dev_name(), dev_set_name() 2008-11-08 21:37:46 +01:00
mtd Merge git://git.infradead.org/mtd-2.6 2008-11-06 15:43:13 -08:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-11-06 16:44:23 -08:00
nubus nubus: fix mis-indented statement 2008-10-16 11:21:30 -07:00
of OF-device: Don't overwrite numa_node in device registration 2008-10-31 16:12:01 +11:00
oprofile oprofile: fix memory ordering 2008-10-27 19:15:41 +01:00
parisc [PATCH] introduce fmode_t, do annotations 2008-10-21 07:47:06 -04:00
parport Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-30 12:52:53 -07:00
pci PCI: fix range check on mmapped sysfs resource files 2008-11-03 14:41:16 -08:00
pcmcia Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-31 16:18:02 +09:00
pnp drivers: remove duplicated #include 2008-11-04 08:18:19 -08:00
power Merge git://git.infradead.org/battery-2.6 2008-10-20 09:44:30 -07:00
ps3 powerpc/ps3: Fix compile error in ps3-lpm.c 2008-11-05 19:59:08 +11:00
rapidio
regulator regulator: Use menuconfig in Kconfig 2008-11-09 14:49:23 +00:00
rtc rtc-cmos: fix boot log message 2008-11-06 15:41:19 -08:00
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-10-30 11:46:28 -07:00
sbus drivers: remove duplicated #include 2008-11-04 08:18:19 -08:00
scsi saner FASYNC handling on file close 2008-11-01 09:49:46 -07:00
serial atmel_serial: keep clock off when it's not needed 2008-11-06 15:41:19 -08:00
sh
sn
spi Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 2008-10-16 12:40:26 -07:00
ssb Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
staging Don't ask twice about not including staging drivers 2008-11-09 12:47:04 -08:00
tc
telephony saner FASYNC handling on file close 2008-11-01 09:49:46 -07:00
thermal
uio saner FASYNC handling on file close 2008-11-01 09:49:46 -07:00
usb saner FASYNC handling on file close 2008-11-01 09:49:46 -07:00
uwb uwb: wrong sizeof argument in mac address compare 2008-10-20 14:37:53 +01:00
video fbdev: fix fb_compat_ioctl() deadlocks 2008-11-06 15:41:19 -08:00
virtio
w1 x86: sysfs: kill owner field from attribute 2008-10-20 08:52:42 -07:00
watchdog SAM9 watchdog: update for moved headers 2008-11-06 15:41:20 -08:00
xen drivers: remove duplicated #include 2008-11-04 08:18:19 -08:00
zorro
Kconfig regulator: Build on non-ARM platforms 2008-10-28 21:47:17 +00:00
Makefile Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb 2008-10-26 16:35:46 -07:00