aboutsummaryrefslogtreecommitdiffstats
path: root/fs/autofs4
diff options
context:
space:
mode:
Diffstat (limited to 'fs/autofs4')
-rw-r--r--fs/autofs4/waitq.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
index be78e9378c03..b0bb9d43bcd9 100644
--- a/fs/autofs4/waitq.c
+++ b/fs/autofs4/waitq.c
@@ -33,7 +33,7 @@ void autofs4_catatonic_mode(struct autofs_sb_info *sbi)
33 sbi->catatonic = 1; 33 sbi->catatonic = 1;
34 wq = sbi->queues; 34 wq = sbi->queues;
35 sbi->queues = NULL; /* Erase all wait queues */ 35 sbi->queues = NULL; /* Erase all wait queues */
36 while ( wq ) { 36 while (wq) {
37 nwq = wq->next; 37 nwq = wq->next;
38 wq->status = -ENOENT; /* Magic is gone - report failure */ 38 wq->status = -ENOENT; /* Magic is gone - report failure */
39 kfree(wq->name); 39 kfree(wq->name);
@@ -45,7 +45,6 @@ void autofs4_catatonic_mode(struct autofs_sb_info *sbi)
45 fput(sbi->pipe); /* Close the pipe */ 45 fput(sbi->pipe); /* Close the pipe */
46 sbi->pipe = NULL; 46 sbi->pipe = NULL;
47 } 47 }
48
49 shrink_dcache_sb(sbi->sb); 48 shrink_dcache_sb(sbi->sb);
50} 49}
51 50
@@ -165,7 +164,7 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
165 int len, status; 164 int len, status;
166 165
167 /* In catatonic mode, we don't wait for nobody */ 166 /* In catatonic mode, we don't wait for nobody */
168 if ( sbi->catatonic ) 167 if (sbi->catatonic)
169 return -ENOENT; 168 return -ENOENT;
170 169
171 name = kmalloc(NAME_MAX + 1, GFP_KERNEL); 170 name = kmalloc(NAME_MAX + 1, GFP_KERNEL);
@@ -190,7 +189,7 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
190 break; 189 break;
191 } 190 }
192 191
193 if ( !wq ) { 192 if (!wq) {
194 /* Can't wait for an expire if there's no mount */ 193 /* Can't wait for an expire if there's no mount */
195 if (notify == NFY_NONE && !d_mountpoint(dentry)) { 194 if (notify == NFY_NONE && !d_mountpoint(dentry)) {
196 kfree(name); 195 kfree(name);
@@ -200,7 +199,7 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
200 199
201 /* Create a new wait queue */ 200 /* Create a new wait queue */
202 wq = kmalloc(sizeof(struct autofs_wait_queue),GFP_KERNEL); 201 wq = kmalloc(sizeof(struct autofs_wait_queue),GFP_KERNEL);
203 if ( !wq ) { 202 if (!wq) {
204 kfree(name); 203 kfree(name);
205 mutex_unlock(&sbi->wq_mutex); 204 mutex_unlock(&sbi->wq_mutex);
206 return -ENOMEM; 205 return -ENOMEM;
@@ -240,14 +239,14 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
240 239
241 /* wq->name is NULL if and only if the lock is already released */ 240 /* wq->name is NULL if and only if the lock is already released */
242 241
243 if ( sbi->catatonic ) { 242 if (sbi->catatonic) {
244 /* We might have slept, so check again for catatonic mode */ 243 /* We might have slept, so check again for catatonic mode */
245 wq->status = -ENOENT; 244 wq->status = -ENOENT;
246 kfree(wq->name); 245 kfree(wq->name);
247 wq->name = NULL; 246 wq->name = NULL;
248 } 247 }
249 248
250 if ( wq->name ) { 249 if (wq->name) {
251 /* Block all but "shutdown" signals while waiting */ 250 /* Block all but "shutdown" signals while waiting */
252 sigset_t oldset; 251 sigset_t oldset;
253 unsigned long irqflags; 252 unsigned long irqflags;
@@ -283,12 +282,12 @@ int autofs4_wait_release(struct autofs_sb_info *sbi, autofs_wqt_t wait_queue_tok
283 struct autofs_wait_queue *wq, **wql; 282 struct autofs_wait_queue *wq, **wql;
284 283
285 mutex_lock(&sbi->wq_mutex); 284 mutex_lock(&sbi->wq_mutex);
286 for ( wql = &sbi->queues ; (wq = *wql) != 0 ; wql = &wq->next ) { 285 for (wql = &sbi->queues ; (wq = *wql) != 0 ; wql = &wq->next) {
287 if ( wq->wait_queue_token == wait_queue_token ) 286 if (wq->wait_queue_token == wait_queue_token)
288 break; 287 break;
289 } 288 }
290 289
291 if ( !wq ) { 290 if (!wq) {
292 mutex_unlock(&sbi->wq_mutex); 291 mutex_unlock(&sbi->wq_mutex);
293 return -EINVAL; 292 return -EINVAL;
294 } 293 }