[U-Boot] [PATCH] nand: Fix set_dev checks for no device

If we do nand device 0 command in u-boot on a device that has NAND support enabled but no NAND chip, we can get data abort at least on omaps.
Fix the issue by adding a check for nand_info[dev].
Signed-off-by: Tony Lindgren tony@atomide.com --- a/cmd/nand.c +++ b/cmd/nand.c @@ -116,7 +116,7 @@ free_dat: static int set_dev(int dev) { if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE || - !nand_info[dev]->name) { + !nand_info[dev] || !nand_info[dev]->name) { puts("No such device\n"); return -1; }

On Tue, 2016-08-23 at 14:26 -0700, Tony Lindgren wrote:
If we do nand device 0 command in u-boot on a device that has NAND support enabled but no NAND chip, we can get data abort at least on omaps.
Fix the issue by adding a check for nand_info[dev].
Signed-off-by: Tony Lindgren tony@atomide.com --- a/cmd/nand.c +++ b/cmd/nand.c @@ -116,7 +116,7 @@ free_dat: static int set_dev(int dev) { if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE ||
- !nand_info[dev]->name) {
- !nand_info[dev] || !nand_info[dev]->name) {
puts("No such device\n"); return -1; }
The new !nand_info[dev] check can replace the old name check (similarly to how commit 4cc9699be7ffc replaced the old zero-blocksize check).
-Scott

* Scott Wood oss@buserror.net [160823 14:31]:
On Tue, 2016-08-23 at 14:26 -0700, Tony Lindgren wrote:
If we do nand device 0 command in u-boot on a device that has NAND support enabled but no NAND chip, we can get data abort at least on omaps.
Fix the issue by adding a check for nand_info[dev].
Signed-off-by: Tony Lindgren tony@atomide.com --- a/cmd/nand.c +++ b/cmd/nand.c @@ -116,7 +116,7 @@ free_dat: static int set_dev(int dev) { if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE ||
- !nand_info[dev]->name) {
- !nand_info[dev] || !nand_info[dev]->name) {
puts("No such device\n"); return -1; }
The new !nand_info[dev] check can replace the old name check (similarly to how commit 4cc9699be7ffc replaced the old zero-blocksize check).
Do you mean we can now leave out the test for !nand_info[dev]->name in set_dev() with this patch?
Regards,
Tony

On Tue, 2016-08-23 at 15:04 -0700, Tony Lindgren wrote:
- Scott Wood oss@buserror.net [160823 14:31]:
On Tue, 2016-08-23 at 14:26 -0700, Tony Lindgren wrote:
If we do nand device 0 command in u-boot on a device that has NAND support enabled but no NAND chip, we can get data abort at least on omaps.
Fix the issue by adding a check for nand_info[dev].
Signed-off-by: Tony Lindgren tony@atomide.com --- a/cmd/nand.c +++ b/cmd/nand.c @@ -116,7 +116,7 @@ free_dat: static int set_dev(int dev) { if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE ||
- !nand_info[dev]->name) {
- !nand_info[dev] || !nand_info[dev]->name) {
puts("No such device\n"); return -1; }
The new !nand_info[dev] check can replace the old name check (similarly to how commit 4cc9699be7ffc replaced the old zero-blocksize check).
Do you mean we can now leave out the test for !nand_info[dev]->name in set_dev() with this patch?
Yes. It existed before because before the array-to-pointer conversion there was no way to directly test nand_info[dev] for emptiness.
-Scott

* Scott Wood oss@buserror.net [160823 15:08]:
On Tue, 2016-08-23 at 15:04 -0700, Tony Lindgren wrote:
- Scott Wood oss@buserror.net [160823 14:31]:
On Tue, 2016-08-23 at 14:26 -0700, Tony Lindgren wrote:
If we do nand device 0 command in u-boot on a device that has NAND support enabled but no NAND chip, we can get data abort at least on omaps.
Fix the issue by adding a check for nand_info[dev].
Signed-off-by: Tony Lindgren tony@atomide.com --- a/cmd/nand.c +++ b/cmd/nand.c @@ -116,7 +116,7 @@ free_dat: static int set_dev(int dev) { if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE ||
- !nand_info[dev]->name) {
- !nand_info[dev] || !nand_info[dev]->name) {
puts("No such device\n"); return -1; }
The new !nand_info[dev] check can replace the old name check (similarly to how commit 4cc9699be7ffc replaced the old zero-blocksize check).
Do you mean we can now leave out the test for !nand_info[dev]->name in set_dev() with this patch?
Yes. It existed before because before the array-to-pointer conversion there was no way to directly test nand_info[dev] for emptiness.
OK seems to work. Updated patch below.
Regards,
Tony 8< ----------------- From: Tony Lindgren tony@atomide.com Date: Tue, 23 Aug 2016 15:14:26 -0700 Subject: [PATCHv2] nand: Fix set_dev checks for no device
If we do nand device 0 command in u-boot on a device that has NAND support enabled but no NAND chip, we can get data abort at least on omaps.
Fix the issue by replaceing the check with nand_info[dev] as suggested by Scott Wood. The check for name existed before because before the array-to-pointer conversion there was no way to directly test nand_info[dev] for emptiness.
Signed-off-by: Tony Lindgren tony@atomide.com
--- a/cmd/nand.c +++ b/cmd/nand.c @@ -115,8 +115,7 @@ free_dat:
static int set_dev(int dev) { - if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE || - !nand_info[dev]->name) { + if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE || !nand_info[dev]) { puts("No such device\n"); return -1; }

On Tue, 2016-08-23 at 15:21 -0700, Tony Lindgren wrote:
OK seems to work. Updated patch below.
Regards,
Tony 8< ----------------- From: Tony Lindgren tony@atomide.com Date: Tue, 23 Aug 2016 15:14:26 -0700 Subject: [PATCHv2] nand: Fix set_dev checks for no device
Could you please send a standalone patch (no 8< ------) generated by git, or at least that has the "diff" line? These aren't even showing up in patchwork as is.
If we do nand device 0 command in u-boot on a device that has NAND support enabled but no NAND chip, we can get data abort at least on omaps.
Fix the issue by replaceing the check with nand_info[dev] as suggested by Scott Wood.
"replacing the name check with..."
-Scott

* Scott Wood oss@buserror.net [160823 17:05]:
On Tue, 2016-08-23 at 15:21 -0700, Tony Lindgren wrote:
OK seems to work. Updated patch below.
Regards,
Tony 8< ----------------- From: Tony Lindgren tony@atomide.com Date: Tue, 23 Aug 2016 15:14:26 -0700 Subject: [PATCHv2] nand: Fix set_dev checks for no device
Could you please send a standalone patch (no 8< ------) generated by git, or at least that has the "diff" line? These aren't even showing up in patchwork as is.
Oh OK sure.
If we do nand device 0 command in u-boot on a device that has NAND support enabled but no NAND chip, we can get data abort at least on omaps.
Fix the issue by replaceing the check with nand_info[dev] as suggested by Scott Wood.
"replacing the name check with..."
Thanks for spotting that, just sent v3 of the patch.
Tony
participants (2)
-
Scott Wood
-
Tony Lindgren