Messages in this thread | | | Date | Fri, 30 Jan 2015 12:57:29 +0000 | From | Bryan O'Donoghue <> | Subject | Re: Fwd: [PATCH v7 1/2] x86: Add Isolated Memory Regions for Quark X1000 |
| |
On 30/01/15 12:55, Bryan O'Donoghue wrote: > Oops. > > Hit reply not reply-all
On 30/01/15 12:03, Andy Shevchenko wrote: >> + return -ENOMEM; > > When CONFIG_DEBUGFS=n, you will get error pointer here, which is not NULL. > > So, the proper check is > if (IS_ERR()) > return PTR_ERR(); > if (!file) > return -ENOMEM;
Yeah I saw that. Also saw that most other code doesn't bother trapping those return values - so skipped it. No issue adding.
> >> + } else { >> + reg = i; > > Do we go always through all IMRs and choose the last one? > If no, break is missed here.
Yep - we always choose the last one.
>> + } >> + } >> + >> + /* Error out if we have no free IMR entries. */ >> + if (reg == -1) { >> + ret = -ENODEV; > > -ENOMEM ? Like you said there is no *free* IMR.
OK
>> + * imr_remove_range(0, size, base); delete IMR at index 0 base/size ignored. >> + * imr_remove_range(-1, base, size); delete IMR from base to base+size. > > (size, base) or (base, size) ?
base, size that's a documentation typo :)
>> + >> + ret = imr_check_params(base, size); >> + if (ret == -EINVAL || (ret == -ENOMEM && reg == -1)) > > reg base size (0 correct, 1 wrong): > > 0 0 0 — which should be used? what is the priority? > 0 x 1 — index > 0 1 x — index > 1 0 0 — address > 1 0 1 — an error > 1 1 1 — an error > > Thus, could it be simpler? Like > if (reg < 0 && ret) ?
ret will be EINVAL for unaligned base or size ret will be ENOMEM when reg == -1 and size == 0
I could probably write it like this to make it clearer (ret == -EINVAL || (reg == -1 && size == 0) return -EINVAL;
traps unaligned input - for address range tear-down traps zero sized - for address range tear-down
Allows index based teardown i.e. reg >= 0
> if (ret) > >> + pr_warn("debugfs register failed!\n"); > > Do we actually need this? Or move it to debug level.
It was your suggestion @ a previous review ....
> Here is the mix of kernel levels. What about to align them? > > For example I doubt we need to distinguish messages by level: > > pr_info(); > vprintk(KERN_INFO fmt, …);
OK fine.
| |