If a new interval overlaps or extends an existing interval in add_interval(), do not fail, but extend the existing interval.
Signed-off-by: Dominik Brodowski <li...@dominikbrodowski.net> --- drivers/pcmcia/rsrc_nonstatic.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/pcmcia/rsrc_nonstatic.c b/drivers/pcmcia/rsrc_nonstatic.c index 19cecb5..a06881c 100644 --- a/drivers/pcmcia/rsrc_nonstatic.c +++ b/drivers/pcmcia/rsrc_nonstatic.c @@ -124,8 +124,10 @@ static int add_interval(struct resource_map *map, u_long base, u_long num) struct resource_map *p, *q; for (p = map; ; p = p->next) { - if ((p != map) && (p->base+p->num-1 >= base)) - return -1; + if ((p != map) && (p->base+p->num >= base)) { + p->num = max(num + base - p->base, p->num); + return 0; + } if ((p->next == map) || (p->next->base > base+num-1)) break; } -- 1.6.3.3 _______________________________________________ Linux PCMCIA reimplementation list http://lists.infradead.org/mailman/listinfo/linux-pcmcia