Re: [PATCH 2/5 -tip] cifs: umount_begin BKL pushdown

Al Viro
2009-04-23T19:15:36Z

On Thu, Apr 23, 2009 at 09:12:02PM +0200, Alessio Igor Bogani wrote:
> struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
> struct cifsTconInfo *tcon;
>
> - if (cifs_sb == NULL)
> + lock_kernel();
> +
> + if (cifs_sb == NULL) {
> + unlock_kernel();
> return;
> + }

Huh? Why would a bleeding *local* *variable* care about BKL at all?

> tcon = cifs_sb->tcon;
> - if (tcon == NULL)
> + if (tcon == NULL) {
> + unlock_kernel();
> return;
> + }
>
> read_lock(&cifs_tcp_ses_lock);
> if (tcon->tc_count == 1)
> tcon->tidStatus = CifsExiting;
> read_unlock(&cifs_tcp_ses_lock);
>
> + unlock_kernel();
> +
> /* cancel_brl_requests(tcon); */ /* BB mark all brl mids as exiting */
> /* cancel_notify_requests(tcon); */

... and why would the rest of it *not* care?

> if (tcon->ses && tcon->ses->server) {
> --
> 1.6.0.4
>