lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAH2r5muNZdzYOWZrRvo_OKVsmsPnNZckriKDqQTAQ06Wm5PObA@mail.gmail.com>
Date:   Tue, 22 Jun 2021 18:14:07 -0500
From:   Steve French <smfrench@...il.com>
To:     CIFS <linux-cifs@...r.kernel.org>,
        LKML <linux-kernel@...r.kernel.org>
Subject: Re: coverity problems with certain macros

Also interesting that it appears to show up only in the "linux"
coverity report not the "linux-next" coverity report which have
similar code there.

On Tue, Jun 22, 2021 at 6:11 PM Steve French <smfrench@...il.com> wrote:
>
> Looks like coverity's scan of the Linux kernel has problems with
> analyzing locks across some debug print macros (which ironically don't
> use any locks related to this component)
>
> e.g. Coverity Linux issues: 1484748, 1484736, 1475751, 1475743 and 1475726
>
> as an example it flags the section of code below, and others with
> calls to "cifs_dbf(VFS, ...) " in them (and note that the debug macros
> don't take a lock) starting with the cifs_dbg(VFS, ...) call.  It
> says:
>
> "May result in deadlock if there is another attempt to acquire the lock.
> In find_cifs_entry: Missing a release of a lock on a path"
>
> Oddly it doesn't flag "cifs_dbg(FYI, ...") calls, and even more
> strangely the calls they flag are simply wrappers around calls to
> "pr_err__ ## ratefunc ..."
>
> See below snippet from fs/cifs/readdir.c e.g.
>
>                         cifs_dbg(VFS, "reached end of buf searching
> for pos in buf %d index to find %lld rc %d\n",
>                                  pos_in_buf, index_to_find, rc);
>                 }
>                 rc = 0;
>                 *current_entry = cur_ent;
>         } else {
>                 cifs_dbg(FYI, "index not in buffer - could not
> findnext into it\n");
>                 return 0;
>         }
>
>         if (pos_in_buf >= cfile->srch_inf.entries_in_buffer) {
>                 cifs_dbg(FYI, "can not return entries pos_in_buf
> beyond last\n");
>                 *num_to_ret = 0;
>         } else
>                 *num_to_ret = cfile->srch_inf.entries_in_buffer - pos_in_buf;
>
>         return rc;
> }
>
> --
> Thanks,
>
> Steve



-- 
Thanks,

Steve

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ