Commit 29dde7c2 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for-linus-20160415' of git://git.infradead.org/linux-mtd

Pull MTD fix from Brian Norris:
 "One MTD fix for v4.6-rc4:

  In the v4.4 cycle, we relaxed the requirement for assigning
  mtd->owner, but we didn't remove this error case.  It's hit only
  by drivers that are both:

   (a) using nand_scan() directly
  and
   (b) built as modules

  We haven't seen explicit complaints about this (most use cases don't
  fit one or both of the above), but we should definitely not be
  BUG()'ing here"

* tag 'for-linus-20160415' of git://git.infradead.org/linux-mtd:
  mtd: nand: Drop mtd.owner requirement in nand_scan
parents 2fffad12 20c07a5b
...@@ -4009,7 +4009,6 @@ static int nand_dt_init(struct nand_chip *chip) ...@@ -4009,7 +4009,6 @@ static int nand_dt_init(struct nand_chip *chip)
* This is the first phase of the normal nand_scan() function. It reads the * This is the first phase of the normal nand_scan() function. It reads the
* flash ID and sets up MTD fields accordingly. * flash ID and sets up MTD fields accordingly.
* *
* The mtd->owner field must be set to the module of the caller.
*/ */
int nand_scan_ident(struct mtd_info *mtd, int maxchips, int nand_scan_ident(struct mtd_info *mtd, int maxchips,
struct nand_flash_dev *table) struct nand_flash_dev *table)
...@@ -4429,19 +4428,12 @@ EXPORT_SYMBOL(nand_scan_tail); ...@@ -4429,19 +4428,12 @@ EXPORT_SYMBOL(nand_scan_tail);
* *
* This fills out all the uninitialized function pointers with the defaults. * This fills out all the uninitialized function pointers with the defaults.
* The flash ID is read and the mtd/chip structures are filled with the * The flash ID is read and the mtd/chip structures are filled with the
* appropriate values. The mtd->owner field must be set to the module of the * appropriate values.
* caller.
*/ */
int nand_scan(struct mtd_info *mtd, int maxchips) int nand_scan(struct mtd_info *mtd, int maxchips)
{ {
int ret; int ret;
/* Many callers got this wrong, so check for it for a while... */
if (!mtd->owner && caller_is_module()) {
pr_crit("%s called with NULL mtd->owner!\n", __func__);
BUG();
}
ret = nand_scan_ident(mtd, maxchips, NULL); ret = nand_scan_ident(mtd, maxchips, NULL);
if (!ret) if (!ret)
ret = nand_scan_tail(mtd); ret = nand_scan_tail(mtd);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment