Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a30871f authored by Artem Bityutskiy's avatar Artem Bityutskiy Committed by David Woodhouse
Browse files

mtd: fix MTD suspend



Commits 3fe4bae8 and
079c985e broke MTD suspend in 2 ways:

1. When the '->suspend' method is not present, we return -EOPNOTSUPP, but
   the callers of 'mtd_suspend()' expects 0 instead.
2. Checking of the 'mtd' parameter against NULL has been incorrectly removed
   in 'mtd_cls_suspend()'.

This patch fixes the breakages. This has been found, analyzed, reported
and tested by Rafael J. Wysocki <rjw@sisk.pl>.

Note, this patch is not needed in the stable tree because it causes a
regression introduced during the v3.3 merge window.

Reported-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
Tested-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
Tested-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent bce41d60
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ static int mtd_cls_suspend(struct device *dev, pm_message_t state)
{
	struct mtd_info *mtd = dev_get_drvdata(dev);

	return mtd_suspend(mtd);
	return mtd ? mtd_suspend(mtd) : 0;
}

static int mtd_cls_resume(struct device *dev)
+1 −3
Original line number Diff line number Diff line
@@ -427,9 +427,7 @@ static inline int mtd_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t len)

static inline int mtd_suspend(struct mtd_info *mtd)
{
	if (!mtd->suspend)
		return -EOPNOTSUPP;
	return mtd->suspend(mtd);
	return mtd->suspend ? mtd->suspend(mtd) : 0;
}

static inline void mtd_resume(struct mtd_info *mtd)