• Brian Norris's avatar
    pwm: Improve args checking in pwm_apply_state() · ef2bf499
    Brian Norris authored
    It seems like in the process of refactoring pwm_config() to utilize the
    newly-introduced pwm_apply_state() API, some args/bounds checking was
    dropped.
    
    In particular, I noted that we are now allowing invalid period
    selections, e.g.:
    
      # echo 1 > /sys/class/pwm/pwmchip0/export
      # cat /sys/class/pwm/pwmchip0/pwm1/period
      100
      # echo 101 > /sys/class/pwm/pwmchip0/pwm1/duty_cycle
      [... driver may or may not reject the value, or trigger some logic bug ...]
    
    It's better to see:
    
      # echo 1 > /sys/class/pwm/pwmchip0/export
      # cat /sys/class/pwm/pwmchip0/pwm1/period
      100
      # echo 101 > /sys/class/pwm/pwmchip0/pwm1/duty_cycle
      -bash: echo: write error: Invalid argument
    
    This patch reintroduces some bounds checks in both pwm_config() (for its
    signed parameters; we don't want to convert negative values into large
    unsigned values) and in pwm_apply_state() (which fix the above described
    behavior, as well as other potential API misuses).
    
    Fixes: 5ec803ed ("pwm: Add core infrastructure to allow atomic updates")
    Signed-off-by: default avatarBrian Norris <briannorris@chromium.org>
    Acked-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: default avatarThierry Reding <thierry.reding@gmail.com>
    ef2bf499
core.c 23.1 KB