All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH AUTOSEL for 4.14 01/60] backlight: pwm_bl: Fix overflow condition
@ 2017-12-13  1:55 alexander.levin
  2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 02/60] drm: Add retries for lspcon mode detection alexander.levin
                   ` (58 more replies)
  0 siblings, 59 replies; 65+ messages in thread
From: alexander.levin @ 2017-12-13  1:55 UTC (permalink / raw)
  To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
  Cc: Derek Basehore, Lee Jones, alexander.levin

From: Derek Basehore <dbasehore@chromium.org>

[ Upstream commit 5d0c49acebc9488e37db95f1d4a55644e545ffe7 ]

This fixes an overflow condition that can happen with high max
brightness and period values in compute_duty_cycle. This fixes it by
using a 64 bit variable for computing the duty cycle.

Signed-off-by: Derek Basehore <dbasehore@chromium.org>
Acked-by: Thierry Reding <thierry.reding@gmail.com>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
---
 drivers/video/backlight/pwm_bl.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
index 9bd17682655a..1c2289ddd555 100644
--- a/drivers/video/backlight/pwm_bl.c
+++ b/drivers/video/backlight/pwm_bl.c
@@ -79,14 +79,17 @@ static void pwm_backlight_power_off(struct pwm_bl_data *pb)
 static int compute_duty_cycle(struct pwm_bl_data *pb, int brightness)
 {
 	unsigned int lth = pb->lth_brightness;
-	int duty_cycle;
+	u64 duty_cycle;
 
 	if (pb->levels)
 		duty_cycle = pb->levels[brightness];
 	else
 		duty_cycle = brightness;
 
-	return (duty_cycle * (pb->period - lth) / pb->scale) + lth;
+	duty_cycle *= pb->period - lth;
+	do_div(duty_cycle, pb->scale);
+
+	return duty_cycle + lth;
 }
 
 static int pwm_backlight_update_status(struct backlight_device *bl)
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 65+ messages in thread

end of thread, other threads:[~2017-12-20 17:13 UTC | newest]

Thread overview: 65+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-13  1:55 [PATCH AUTOSEL for 4.14 01/60] backlight: pwm_bl: Fix overflow condition alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 02/60] drm: Add retries for lspcon mode detection alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 03/60] clk: sunxi-ng: nm: Check if requested rate is supported by fractional clock alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 05/60] crypto: talitos - fix ctr-aes-talitos alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 06/60] crypto: talitos - fix AEAD test failures alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 04/60] clk: sunxi-ng: sun5i: Fix bit offset of audio PLL post-divider alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 07/60] crypto: talitos - fix memory corruption on SEC2 alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 11/60] kvm, mm: account kvm related kmem slabs to kmemcg alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 08/60] crypto: crypto4xx - increase context and scatter ring buffer elements alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 09/60] crypto: lrw - Fix an error handling path in 'create()' alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 10/60] rtc: pl031: make interrupt optional alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 14/60] scsi: cxgb4i: fix Tx skb leak alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 12/60] net: phy: at803x: Change error to EINVAL for invalid MAC alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 13/60] PCI: Avoid bus reset if bridge itself is broken alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 15/60] scsi: mpt3sas: Fix IO error occurs on pulling out a drive from RAID1 volume created on two SATA drive alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 16/60] PCI: Create SR-IOV virtfn/physfn links before attaching driver alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 17/60] PM / OPP: Move error message to debug level alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 18/60] igb: check memory allocation failure alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 19/60] Bluetooth: avoid silent hci_bcm ACPI PM regression alexander.levin
2017-12-13  8:14   ` Johan Hovold
2017-12-13 13:37     ` alexander.levin
2017-12-13 14:05       ` Johan Hovold
2017-12-13 14:18         ` alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 22/60] iio: st_sensors: add register mask for status register alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 21/60] i40e: use the safe hash table iterator when deleting mac filters alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 20/60] kbuild: re-order the code to not parse unnecessary variables alexander.levin
2017-12-20 17:13   ` Greg KH
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 23/60] ixgbe: fix use of uninitialized padding alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 26/60] md: always set THREAD_WAKEUP and wake up wqueue if thread existed alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 25/60] block,bfq: Disable writeback throttling alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 24/60] IB/rxe: check for allocation failure on elem alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 27/60] ip_gre: check packet length and mtu correctly in erspan tx alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 30/60] Bluetooth: hci_uart_set_flow_control: Fix NULL deref when using serdev alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 29/60] leds: pca955x: Don't invert requested value in pca955x_gpio_set_value() alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 28/60] ipv6: grab rt->rt6i_ref before allocating pcpu rt alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 33/60] PCI/AER: Report non-fatal errors only to the affected endpoint alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 32/60] i40e/i40evf: spread CPU affinity hints across online CPUs only alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 34/60] tracing: Exclude 'generic fields' from histograms alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 31/60] Bluetooth: hci_bcm: Fix setting of irq trigger type alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 35/60] percpu: don't forget to free the temporary struct pcpu_alloc_info alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 38/60] powerpc/xmon: Avoid tripping SMP hardlockup watchdog alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 37/60] ASoC: img-parallel-out: Add pm_runtime_get/put to set_fmt callback alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 36/60] ASoC: codecs: msm8916-wcd-analog: fix micbias level alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 42/60] fm10k: fix mis-ordered parameters in declaration for .ndo_set_vf_bw alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 39/60] powerpc/watchdog: Do not trigger SMP crash from touch_nmi_watchdog alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 40/60] sctp: silence warns on sctp_stream_init allocations alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 41/60] ASoC: codecs: msm8916-wcd-analog: fix module autoload alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 44/60] scsi: lpfc: PLOGI failures during NPIV testing alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 43/60] scsi: lpfc: Fix secure firmware updates alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 45/60] scsi: lpfc: Fix warning messages when NVME_TARGET_FC not defined alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 46/60] i40e: fix client notify of VF reset alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 48/60] ARM: exynos_defconfig: Enable UAS support for Odroid HC1 board alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 50/60] ibmvnic: Set state UP alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 47/60] vfio/pci: Virtualize Maximum Payload Size alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 49/60] fm10k: ensure we process SM mbx when processing VF mbx alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 54/60] clk: sunxi-ng: sun6i: Rename HDMI DDC clock to avoid name collision alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 51/60] net: ipv6: send NS for DAD when link operationally up alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 52/60] RDMA/hns: Avoid NULL pointer exception alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 53/60] staging: greybus: light: Release memory obtained by kasprintf alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 58/60] drm/vc4: Avoid using vrefresh==0 mode in DSI htotal math alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 56/60] rtc: set the alarm to the next expiring timer alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 55/60] tcp: fix under-evaluated ssthresh in TCP Vegas alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 57/60] cpuidle: fix broadcast control when broadcast can not be entered alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 60/60] IB/opa_vnic: Properly return the total MACs in UC MAC list alexander.levin
2017-12-13  1:55 ` [PATCH AUTOSEL for 4.14 59/60] IB/opa_vnic: Properly clear Mac Table Digest alexander.levin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.