Commit 3e660fbef96f53d01ba022b1b75b72759a02983e
Committed by
Christoph Hellwig
1 parent
97cd6805ac
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
ufs: fix NULL dereference when no regulators are defined
If no voltage supply regulators are defined for the UFS devices (assumed they are always-on), ufshcd_config_vreg_load() can be called on suspend/resume paths with vreg == NULL as hba->vreg_info.vcc* equal to NULL, and it causes NULL pointer dereference. This fixes it by making ufshcd_config_vreg_{h,l}pm noop when no regulators are defined. Signed-off-by: Akinobu Mita <mita@fixstars.com> Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org> Signed-off-by: Christoph Hellwig <hch@lst.de>
Showing 1 changed file with 6 additions and 0 deletions Side-by-side Diff
drivers/scsi/ufs/ufshcd.c
... | ... | @@ -4268,12 +4268,18 @@ |
4268 | 4268 | static inline int ufshcd_config_vreg_lpm(struct ufs_hba *hba, |
4269 | 4269 | struct ufs_vreg *vreg) |
4270 | 4270 | { |
4271 | + if (!vreg) | |
4272 | + return 0; | |
4273 | + | |
4271 | 4274 | return ufshcd_config_vreg_load(hba->dev, vreg, UFS_VREG_LPM_LOAD_UA); |
4272 | 4275 | } |
4273 | 4276 | |
4274 | 4277 | static inline int ufshcd_config_vreg_hpm(struct ufs_hba *hba, |
4275 | 4278 | struct ufs_vreg *vreg) |
4276 | 4279 | { |
4280 | + if (!vreg) | |
4281 | + return 0; | |
4282 | + | |
4277 | 4283 | return ufshcd_config_vreg_load(hba->dev, vreg, vreg->max_uA); |
4278 | 4284 | } |
4279 | 4285 |