lockd: clean up __nsm_find()

Use list_for_each_entry().  Also, in keeping with kernel style, make the
normal case (kzalloc succeeds) unindented and handle the abnormal case
with a goto.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
J. Bruce Fields 2008-02-20 15:27:31 -05:00
parent 164f98adbb
commit a95e56e72c

View File

@ -465,7 +465,7 @@ __nsm_find(const struct sockaddr_in *sin,
int create)
{
struct nsm_handle *nsm = NULL;
struct list_head *pos;
struct nsm_handle *pos;
if (!sin)
return NULL;
@ -480,16 +480,16 @@ __nsm_find(const struct sockaddr_in *sin,
}
mutex_lock(&nsm_mutex);
list_for_each(pos, &nsm_handles) {
nsm = list_entry(pos, struct nsm_handle, sm_link);
list_for_each_entry(pos, &nsm_handles, sm_link) {
if (hostname && nsm_use_hostnames) {
if (strlen(nsm->sm_name) != hostname_len
|| memcmp(nsm->sm_name, hostname, hostname_len))
if (strlen(pos->sm_name) != hostname_len
|| memcmp(pos->sm_name, hostname, hostname_len))
continue;
} else if (!nlm_cmp_addr(&nsm->sm_addr, sin))
} else if (!nlm_cmp_addr(&pos->sm_addr, sin))
continue;
atomic_inc(&nsm->sm_count);
atomic_inc(&pos->sm_count);
nsm = pos;
goto out;
}
@ -499,15 +499,15 @@ __nsm_find(const struct sockaddr_in *sin,
}
nsm = kzalloc(sizeof(*nsm) + hostname_len + 1, GFP_KERNEL);
if (nsm != NULL) {
nsm->sm_addr = *sin;
nsm->sm_name = (char *) (nsm + 1);
memcpy(nsm->sm_name, hostname, hostname_len);
nsm->sm_name[hostname_len] = '\0';
atomic_set(&nsm->sm_count, 1);
if (nsm == NULL)
goto out;
nsm->sm_addr = *sin;
nsm->sm_name = (char *) (nsm + 1);
memcpy(nsm->sm_name, hostname, hostname_len);
nsm->sm_name[hostname_len] = '\0';
atomic_set(&nsm->sm_count, 1);
list_add(&nsm->sm_link, &nsm_handles);
}
list_add(&nsm->sm_link, &nsm_handles);
out:
mutex_unlock(&nsm_mutex);