Re: [PATCH] cifs: remove unnecessary locking around sequence_number

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Nov 22, 2010 at 2:31 PM, Jeff Layton <jlayton@xxxxxxxxxxxxxxx> wrote:
> The server->sequence_number is already protected by the srv_mutex. The
> GlobalMid_lock is unneeded here.
>
> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
> ---
>  fs/cifs/cifsencrypt.c |    6 ++----
>  fs/cifs/cifsglob.h    |    2 +-
>  2 files changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/fs/cifs/cifsencrypt.c b/fs/cifs/cifsencrypt.c
> index f856732..66f3d50 100644
> --- a/fs/cifs/cifsencrypt.c
> +++ b/fs/cifs/cifsencrypt.c
> @@ -72,6 +72,7 @@ static int cifs_calculate_signature(const struct smb_hdr *cifs_pdu,
>        return 0;
>  }
>
> +/* must be called with server->srv_mutex held */
>  int cifs_sign_smb(struct smb_hdr *cifs_pdu, struct TCP_Server_Info *server,
>                  __u32 *pexpected_response_sequence_number)
>  {
> @@ -84,14 +85,12 @@ int cifs_sign_smb(struct smb_hdr *cifs_pdu, struct TCP_Server_Info *server,
>        if ((cifs_pdu->Flags2 & SMBFLG2_SECURITY_SIGNATURE) == 0)
>                return rc;
>
> -       spin_lock(&GlobalMid_Lock);
>        cifs_pdu->Signature.Sequence.SequenceNumber =
>                        cpu_to_le32(server->sequence_number);
>        cifs_pdu->Signature.Sequence.Reserved = 0;
>
>        *pexpected_response_sequence_number = server->sequence_number++;
>        server->sequence_number++;
> -       spin_unlock(&GlobalMid_Lock);
>
>        rc = cifs_calculate_signature(cifs_pdu, server, smb_signature);
>        if (rc)
> @@ -149,6 +148,7 @@ static int cifs_calc_signature2(const struct kvec *iov, int n_vec,
>        return rc;
>  }
>
> +/* must be called with server->srv_mutex held */
>  int cifs_sign_smb2(struct kvec *iov, int n_vec, struct TCP_Server_Info *server,
>                   __u32 *pexpected_response_sequence_number)
>  {
> @@ -162,14 +162,12 @@ int cifs_sign_smb2(struct kvec *iov, int n_vec, struct TCP_Server_Info *server,
>        if ((cifs_pdu->Flags2 & SMBFLG2_SECURITY_SIGNATURE) == 0)
>                return rc;
>
> -       spin_lock(&GlobalMid_Lock);
>        cifs_pdu->Signature.Sequence.SequenceNumber =
>                                cpu_to_le32(server->sequence_number);
>        cifs_pdu->Signature.Sequence.Reserved = 0;
>
>        *pexpected_response_sequence_number = server->sequence_number++;
>        server->sequence_number++;
> -       spin_unlock(&GlobalMid_Lock);
>
>        rc = cifs_calc_signature2(iov, n_vec, server, smb_signature);
>        if (rc)
> diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
> index a8d9f32..bba731c 100644
> --- a/fs/cifs/cifsglob.h
> +++ b/fs/cifs/cifsglob.h
> @@ -200,7 +200,7 @@ struct TCP_Server_Info {
>        char cryptkey[CIFS_CRYPTO_KEY_SIZE]; /* used by ntlm, ntlmv2 etc */
>        /* 16th byte of RFC1001 workstation name is always null */
>        char workstation_RFC1001_name[RFC1001_NAME_LEN_WITH_NULL];
> -       __u32 sequence_number; /* needed for CIFS PDU signature */
> +       __u32 sequence_number; /* for signing, protected by srv_mutex */
>        struct session_key session_key;
>        unsigned long lstrp; /* when we got last response from this server */
>        u16 dialect; /* dialect index that server chose */
> --
> 1.7.3.2
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

Looks correct. Two less contenders for global mid lock.

Reviewed-by: Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux