base/memory, hotplug: fix a kernel oops in show_valid_zones()
[firefly-linux-kernel-4.4.55.git] / drivers / pwm / core.c
index b8f6c309c160ace262e50ea5f2513a3673ce69fc..ec84ff8ad1b4a59ebbd9c93ea62edb2f714460f6 100644 (file)
@@ -321,6 +321,8 @@ int pwmchip_remove(struct pwm_chip *chip)
        unsigned int i;
        int ret = 0;
 
+       pwmchip_sysfs_unexport_children(chip);
+
        mutex_lock(&pwm_lock);
 
        for (i = 0; i < chip->npwm; i++) {
@@ -738,8 +740,10 @@ struct pwm_device *pwm_get(struct device *dev, const char *con_id)
                }
        }
 
-       if (!chosen)
+       if (!chosen) {
+               pwm = ERR_PTR(-ENODEV);
                goto out;
+       }
 
        chip = pwmchip_find_by_name(chosen->provider);
        if (!chip)
@@ -887,7 +891,7 @@ EXPORT_SYMBOL_GPL(devm_pwm_put);
   */
 bool pwm_can_sleep(struct pwm_device *pwm)
 {
-       return pwm->chip->can_sleep;
+       return true;
 }
 EXPORT_SYMBOL_GPL(pwm_can_sleep);