drm/i915: prevent division by zero when asking for chipset power
authorEugeni Dodonov <eugeni.dodonov@intel.com>
Thu, 10 Nov 2011 15:55:15 +0000 (13:55 -0200)
committerKeith Packard <keithp@keithp.com>
Fri, 16 Dec 2011 16:49:56 +0000 (08:49 -0800)
commit4ed0b577457eb6aeb7cdc7e7316576e63d15abb2
tree9ecf2ddc9ff64ce9a10e3e2b8827a9e7e2b34f8f
parent03d00ac53f9bcde06ff7e33d6676083c18d569a4
drm/i915: prevent division by zero when asking for chipset power

This prevents an in-kernel division by zero which happens when we are
asking for i915_chipset_val too quickly, or within a race condition
between the power monitoring thread and userspace accesses via debugfs.

The issue can be reproduced easily via the following command:
while ``; do cat /sys/kernel/debug/dri/0/i915_emon_status; done

This is particularly dangerous because it can be triggered by
a non-privileged user by just reading the debugfs entry.

This issue was also found independently by Konstantin Belousov
<kostikbel@gmail.com>, who proposed a similar patch.

Reported-by: Konstantin Belousov <kostikbel@gmail.com>
Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Acked-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: <stable@vger.kernel.org>
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_drv.h