diff options
| -rw-r--r-- | net/rose/rose_route.c | 15 | 
1 files changed, 4 insertions, 11 deletions
| diff --git a/net/rose/rose_route.c b/net/rose/rose_route.c index 2dd6bd3a3011..b72bf8a08d48 100644 --- a/net/rose/rose_route.c +++ b/net/rose/rose_route.c @@ -497,22 +497,15 @@ void rose_rt_device_down(struct net_device *dev)  			t         = rose_node;  			rose_node = rose_node->next; -			for (i = 0; i < t->count; i++) { +			for (i = t->count - 1; i >= 0; i--) {  				if (t->neighbour[i] != s)  					continue;  				t->count--; -				switch (i) { -				case 0: -					t->neighbour[0] = t->neighbour[1]; -					fallthrough; -				case 1: -					t->neighbour[1] = t->neighbour[2]; -					break; -				case 2: -					break; -				} +				memmove(&t->neighbour[i], &t->neighbour[i + 1], +					sizeof(t->neighbour[0]) * +						(t->count - i));  			}  			if (t->count <= 0) | 
