From ad9b568a5271b8d67492528b91116316c1204db1 Mon Sep 17 00:00:00 2001 From: Jan Kara Date: Wed, 5 Nov 2003 18:42:41 -0800 Subject: [PATCH] [PATCH] Drop spin lock when calling request_module in quota code From Herbert Xu --- fs/dquot.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/fs/dquot.c b/fs/dquot.c index 00fc672dd334d..64a5a983cbe8a 100644 --- a/fs/dquot.c +++ b/fs/dquot.c @@ -128,16 +128,17 @@ static struct quota_format_type *find_quota_format(int id) if (!actqf || !try_module_get(actqf->qf_owner)) { int qm; + spin_unlock(&dq_list_lock); + for (qm = 0; module_names[qm].qm_fmt_id && module_names[qm].qm_fmt_id != id; qm++); - if (!module_names[qm].qm_fmt_id || request_module(module_names[qm].qm_mod_name)) { - actqf = NULL; - goto out; - } + if (!module_names[qm].qm_fmt_id || request_module(module_names[qm].qm_mod_name)) + return NULL; + + spin_lock(&dq_list_lock); for (actqf = quota_formats; actqf && actqf->qf_fmt_id != id; actqf = actqf->qf_next); if (actqf && !try_module_get(actqf->qf_owner)) actqf = NULL; } -out: spin_unlock(&dq_list_lock); return actqf; } -- 2.53.0