All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suresh Jayaraman <sjayaraman@suse.de>
To: Connor Hansen <cmdkhh@gmail.com>
Cc: Jeff Layton <jlayton@redhat.com>,
	Martijn Uffing <mp3project@sarijopen.student.utwente.nl>,
	linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org,
	sean finney <seanius@seanius.net>
Subject: Re: [OOPS] 3.0-rc1 cifs
Date: Fri, 10 Jun 2011 17:44:15 +0530	[thread overview]
Message-ID: <4DF20A97.8010405@suse.de> (raw)
In-Reply-To: <BANLkTinqT0AXx9STWEzrw-yASTid5rb1Fg@mail.gmail.com>

On 06/10/2011 05:33 PM, Connor Hansen wrote:
> On Fri, Jun 10, 2011 at 4:37 AM, Jeff Layton <jlayton@redhat.com> wrote:
>> On Fri, 10 Jun 2011 02:57:21 +0200 (CEST)
>>  Uffing <mp3project@sarijopen.student.utwente.nl> wrote:
>>
>>>
>>> <snip>
>>>> call in get_dfs_path()
>>>> rc = CIFSTCon(xid, pSesInfo, temp_unc, NULL, nls_codepage);
>>>>
>>>> function header for CIFSTCon
>>>> int  CIFSTCon(unsigned int xid, struct cifs_ses *ses,
>>>>          const char *tree, struct cifs_tcon *tcon,
>>>>          const struct nls_table *nls_codepage)
>>>>
>>>> get_dfs_path() is passing struct cifs_tcon *tcon as NULL
>>>>
>>>> from config:  CONFIG_CIFS_WEAK_PW_HASH=y
>>>>
>>>> in CIFSTCon
>>>>
>>>> #ifdef CONFIG_CIFS_WEAK_PW_HASH
>>>> 3222                 if ((global_secflags & CIFSSEC_MAY_LANMAN) &&
>>>> 3223                     (ses->server->secType == LANMAN))
>>>> 3224                         calc_lanman_hash(tcon->password,
>>>> ses->server->cryptkey,
>>>>
>>>> in calc_lanman_hash tcon is dereferenced(tcon->password) without being
>>>> checked if null
>>>>
>>>> 3225                                          ses->server->sec_mode &
>>>> 3226                                             SECMODE_PW_ENCRYPT ?
>>>> true : false,
>>>> 3227                                          bcc_ptr);
>>>> 3228                 else
>>>> 3229 #endif /* CIFS_WEAK_PW_HASH */
>>>>
>>>> Connor
>>>
>>>
>>> Ave all
>>>
>>> I recompiled  kernel 3.0-rc1 (hadn't enabled CONFIG_DEBUG_INFO=y) and put
>>> the oops (with the new adresses) through gdb per instruction of Jeff. And
>>> Connor was spot on!
>>>
>>> <qoute oops>
>>> BUG: unable to handle kernel NULL pointer dereference at 00000000000000a0
>>> IP: [<ffffffffa041e286>] CIFSTCon+0xf6/0x4d0 [cifs]
>>> </qoute oops>
>>>
>>> <qoute gdb>
>>> This GDB was configured as "x86_64-linux-gnu".
>>> For bug reporting instructions, please see:
>>> <http://www.gnu.org/software/gdb/bugs/>...
>>> Reading symbols from
>>> /lib/modules/3.0.0-rc1-debug/kernel/fs/cifs/cifs.ko...done.
>>> (gdb) list *(CIFSTCon+0xf6)
>>> 0xc2b6 is in CIFSTCon (fs/cifs/connect.c:3230).
>>> 3225                                             ses->server->sec_mode &
>>> 3226                                                SECMODE_PW_ENCRYPT ?
>>> true : false,
>>> 3227                                             bcc_ptr);
>>> 3228                    else
>>> 3229    #endif /* CIFS_WEAK_PW_HASH */
>>> 3230                    rc = SMBNTencrypt(tcon->password,
>>> ses->server->cryptkey,
>>> 3231                                            bcc_ptr);
>>> 3232
>>> 3233                    bcc_ptr += CIFS_AUTH_RESP_SIZE;
>>> 3234                    if (ses->capabilities & CAP_UNICODE) {
>>> (gdb)
>>> </qoute gdb>
>>>
>>
>> (cc'ing Sean F. since I suspect this regression is due to his changes)
>>
>> Thanks for the analysis, Martijn and Connor...
>>
>> What sort of server are you mounting here? It looks like it's using
>> share-level security, so it's either very old or is a samba server
>> configured that way.
>>
>> I suspect that commit c1508ca236 is the culprit. With that, we call
>> into expand_dfs_referral on every mount attempt. Previously we only
>> called into there when we got back  an EREMOTE error and that would
>> have been unlikely on a share-level security connection.
>>
>> I think there are several possible solutions, but since Sean was in
>> here most recently I'd like to have his opinion.
> 
> I don't know enough about cifs but this call in fs/cifs/connect.c
> 
> 2268: rc = CIFSTCon(xid, pSesInfo, temp_unc, NULL, nls_codepage);
> 
> will always result in a null pointer derefence as CIFSTCon uses the
> cifs_tcon struct for passwords without verification

Yes, I too was hovering around this code path today and it doesn't look
correct. Specifically, the call from cifs_dfs_path to CIFSTCon with
cifs_tcon as NULL seems wrong. I tried to do dig history a bit with `git
blame`, but couldn't figure out the commit that introduced this.


-- 
Suresh Jayaraman

  reply	other threads:[~2011-06-10 12:14 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-09 20:15 [OOPS] 3.0-rc1 cifs Martijn Uffing
     [not found] ` <Pine.LNX.4.64.1106092211500.19687-dT/mdtNybfnOcQoxchNua+fsyHJTGBv43KldkOmuLK4@public.gmane.org>
2011-06-09 22:30   ` Jeff Layton
2011-06-09 22:30     ` Jeff Layton
     [not found]     ` <20110609183045.01f6f9fc-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2011-06-09 22:50       ` Connor Hansen
2011-06-09 22:50         ` Connor Hansen
     [not found]         ` <BANLkTimPqmkNJMaJE2_C5zD8ESFOEM3=hg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-06-09 22:53           ` Connor Hansen
2011-06-09 22:53             ` Connor Hansen
2011-06-10  0:57           ` Martijn Uffing
2011-06-10  0:57             ` Martijn Uffing
     [not found]             ` <Pine.LNX.4.64.1106100243370.2168-dT/mdtNybfnOcQoxchNua+fsyHJTGBv43KldkOmuLK4@public.gmane.org>
2011-06-10 11:37               ` Jeff Layton
2011-06-10 11:37                 ` Jeff Layton
     [not found]                 ` <20110610073702.061bc014-4QP7MXygkU+dMjc06nkz3ljfA9RmPOcC@public.gmane.org>
2011-06-10 12:03                   ` Connor Hansen
2011-06-10 12:03                     ` Connor Hansen
2011-06-10 12:14                     ` Suresh Jayaraman [this message]
     [not found]                       ` <4DF20A97.8010405-l3A5Bk7waGM@public.gmane.org>
2011-06-10 12:49                         ` Connor Hansen
2011-06-10 12:49                           ` Connor Hansen
     [not found]                           ` <BANLkTimAauVsqX1JZucG1cg3-MAtqCrZFQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-06-11 11:41                             ` Jeff Layton
2011-06-11 11:41                               ` Jeff Layton
2011-06-11 16:25                               ` Connor Hansen
     [not found]                               ` <20110611074113.5a05f919-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2011-06-11 22:31                                 ` Martijn Uffing
2011-06-11 22:31                                   ` Martijn Uffing
2011-06-12  1:17                                   ` Jeff Layton
     [not found]                                   ` <Pine.LNX.4.64.1106112356500.12565-dT/mdtNybfnOcQoxchNua+fsyHJTGBv43KldkOmuLK4@public.gmane.org>
2011-06-13 15:48                                     ` Jeff Layton
2011-06-13 15:48                                       ` Jeff Layton
     [not found]                                       ` <20110613114831.37c90109-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2011-06-14  2:59                                         ` Pavel Shilovsky
2011-06-14  2:59                                           ` Pavel Shilovsky
2011-06-14 21:11                                         ` Martijn Uffing
2011-06-14 21:11                                           ` Martijn Uffing
2011-06-10 22:03                   ` Martijn Uffing
2011-06-10 22:03                     ` Martijn Uffing
2011-06-15 19:55   ` Maciej Rutecki
2011-06-15 19:55     ` Maciej Rutecki
     [not found]     ` <201106152155.48167.maciej.rutecki-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-06-20  8:33       ` Pavel Shilovsky
     [not found]         ` <1308558796-2693-1-git-send-email-piastryyy-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-06-20 11:16           ` Jeff Layton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DF20A97.8010405@suse.de \
    --to=sjayaraman@suse.de \
    --cc=cmdkhh@gmail.com \
    --cc=jlayton@redhat.com \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mp3project@sarijopen.student.utwente.nl \
    --cc=seanius@seanius.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.