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)
committerRohan Somvanshi <rsomvanshi@nvidia.com>
Wed, 11 Jan 2012 17:22:29 +0000 (09:22 -0800)
commit23cd227590341dc0573d6d07b162b965e9fc47c6
treec5391c261470948656f90c4112b4a2adb5c6466a
parent21eb1b986d9eff984552538196282ee066f001c9
drm/i915: prevent division by zero when asking for chipset power

commit 4ed0b577457eb6aeb7cdc7e7316576e63d15abb2 upstream.

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>
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Change-Id: Ic86534499300b66168ad29ac08ab1e1f987de909
Reviewed-on: http://git-master/r/74160
Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
Tested-by: Varun Wadekar <vwadekar@nvidia.com>
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_drv.h