lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 29 Sep 2015 09:19:27 +0200
From:	Olliver Schinagl <oliver+list@...inagl.nl>
To:	Thierry Reding <thierry.reding@...il.com>
CC:	linux-pwm@...r.kernel.org,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: [RFC] pwm: core: unsigned or signed ints for pwm_config

Hey Thierry, list

I'm going over the pwm core and notice that in the pwm header, duty_ns 
and period_ns is internally stored as an unsigned int.

struct pwm_device {
     const char *label;
     unsigned long flags;
     unsigned int hwpwm;
     unsigned int pwm;
     struct pwm_chip *chip;
     void *chip_data;

     unsigned int period;
     unsigned int duty_cycle;
     enum pwm_polarity polarity;
};

However, pwm_config takes signed ints
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns);

So digging a little deeper in the PWM core, I see that pwm_config 
dissallows negative ints, so having them unsigned has no benefit (and 
technically is illegal)
     if (!pwm  || duty_ns < 0|| period_ns= 0 || duty_ns > period_ns)
         return -EINVAL;

and because (after the check) we cram the signed int into an unsigned one:

     pwm->duty_cycle = duty_ns;
     pwm->period = period_ns;

This could end up badly when using any unsigned int larger then INT_MAX 
and thus ending up with a negative duty/period. I haven't checked deeper 
if this is accounted for later, but would it be worth my time to convert 
all ints to unsigned ints? Since negative period and duty cycles are 
really not possible anyway?

Olliver
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists