It can return with the lock held.

Found by the Stanford locking checker

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/net/ax25/ax25_route.c |    1 +
 1 files changed, 1 insertion(+)

diff -puN net/ax25/ax25_route.c~err2-15-ax25_rt_add-locking-fix net/ax25/ax25_route.c
--- 25/net/ax25/ax25_route.c~err2-15-ax25_rt_add-locking-fix	2004-07-02 01:45:20.234119280 -0700
+++ 25-akpm/net/ax25/ax25_route.c	2004-07-02 01:45:37.960424472 -0700
@@ -122,6 +122,7 @@ static int ax25_rt_add(struct ax25_route
 					ax25_rt->digipeat->calls[i]    = route->digi_addr[i];
 				}
 			}
+			write_unlock(&ax25_route_lock);
 			return 0;
 		}
 		ax25_rt = ax25_rt->next;
_