Memory controller drivers for v5.13

1. OMAP: fix unlikely but possible out of bounds read.
 2. PL353: fix mask used in setting ECC page_size in config register.
 3. Minor cleanup: Freescale Corenet.
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmBt2HIQHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD1/soEACHEZm+1ZDL8VIFDXNwJSm422Psgc0hQk0z
 mJoIYfMLNaGp/rZmfDtmIwXn7UrA0iuoWjqAZTNSDWn4juX7vZpQbuFjMMmr6zEp
 ONZPoLcOm1FCj23kI51nn6a++qaoUUN17vsS+vnXkjp3qKL2y4HneGqFmTRJYtTi
 KaGHWU8ezNB5aWYdKQWvEFIfZAusGVD4VMatoND/sIlq+MXsBBnuny0Pr/1j7aTP
 NObiiBHGIJgxhezZa7EdmUfH8CLtLwI2tkRNOsu6NWPDV4S48nXj2PW5edDHdhzL
 5YuuTrJv8LEFc6JQ8/l4QDj4cLRNVhsb37U+Gc4t9yl7t1Yq7H+geQc/ghuyyBCe
 6RCcUI12GV8I60kacZE3+txjDWZFbO0YPfcmLjDKzmfDrcHEW9uH1zCa7IhnKO1i
 hlm04RM1bXkvPADfiPP+nm2a3Td52R2U7kDSewpvuz/30+XNqRyinjfy5HmiswNi
 mAYXuAYGbNJb7yORDdzSPE+tONUHjfz01+T61PSRwO+Uz7NfqrKycyxJU9MWG/2v
 jt5XJYJpZDHwt08fC0F/rMZmFXVWEZDwaJzDGbSwL8PFQUzwYNKHC/zco3qz5kru
 zBO68aqEuzH5yYOnqSELBM/rEHHwOaiJUggBXWH0A2GqxQJPNGgdAAyMz/ZCUSVA
 oM/y4HbofQ==
 =3E9A
 -----END PGP SIGNATURE-----

Merge tag 'memory-controller-drv-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl into arm/drivers

Memory controller drivers for v5.13

1. OMAP: fix unlikely but possible out of bounds read.
2. PL353: fix mask used in setting ECC page_size in config register.
3. Minor cleanup: Freescale Corenet.

* tag 'memory-controller-drv-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl:
  memory: pl353: fix mask of ECC page_size config register
  memory: fsl-corenet-cf: Remove redundant dev_err call in ccf_probe()
  memory: gpmc: fix out of bounds read and dereference on gpmc_cs[]

Link: https://lore.kernel.org/r/20210407161333.73013-1-krzysztof.kozlowski@canonical.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2021-04-08 17:46:21 +02:00
commit f8e547f528
3 changed files with 7 additions and 6 deletions

View File

@ -192,10 +192,8 @@ static int ccf_probe(struct platform_device *pdev)
}
ccf->regs = devm_ioremap_resource(&pdev->dev, r);
if (IS_ERR(ccf->regs)) {
dev_err(&pdev->dev, "%s: can't map mem resource\n", __func__);
if (IS_ERR(ccf->regs))
return PTR_ERR(ccf->regs);
}
ccf->dev = &pdev->dev;
ccf->info = match->data;

View File

@ -1009,8 +1009,8 @@ EXPORT_SYMBOL(gpmc_cs_request);
void gpmc_cs_free(int cs)
{
struct gpmc_cs_data *gpmc = &gpmc_cs[cs];
struct resource *res = &gpmc->mem;
struct gpmc_cs_data *gpmc;
struct resource *res;
spin_lock(&gpmc_mem_lock);
if (cs >= gpmc_cs_num || cs < 0 || !gpmc_cs_reserved(cs)) {
@ -1018,6 +1018,9 @@ void gpmc_cs_free(int cs)
spin_unlock(&gpmc_mem_lock);
return;
}
gpmc = &gpmc_cs[cs];
res = &gpmc->mem;
gpmc_cs_disable_mem(cs);
if (res->flags)
release_resource(res);

View File

@ -63,7 +63,7 @@
/* ECC memory config register specific constants */
#define PL353_SMC_ECC_MEMCFG_MODE_MASK 0xC
#define PL353_SMC_ECC_MEMCFG_MODE_SHIFT 2
#define PL353_SMC_ECC_MEMCFG_PGSIZE_MASK 0xC
#define PL353_SMC_ECC_MEMCFG_PGSIZE_MASK 0x3
#define PL353_SMC_DC_UPT_NAND_REGS ((4 << 23) | /* CS: NAND chip */ \
(2 << 21)) /* UpdateRegs operation */