All of lore.kernel.org
 help / color / mirror / Atom feed
* [Cluster-devel] 3.18.5 kernel panic: fs/gfs2/acl.c:76
@ 2015-02-06 21:15 Andrew W Elble
  2015-02-06 23:50 ` Andreas Gruenbacher
  0 siblings, 1 reply; 4+ messages in thread
From: Andrew W Elble @ 2015-02-06 21:15 UTC (permalink / raw)
  To: cluster-devel.redhat.com


3.18.5 kernel crashing on acl deletion:

null pointer dereference in fs/gfs2/acl.c:76

to replicate:

Prereq: gfs2 filesystem w/ acl mount option turned on.

Execute:

mkdir testdir
setfacl -m d:u::rwx,d:g::rwx,d:g:wheel:rwx,d:m::rwx,d:o::--- testdir
setfattr -x system.posix_acl_default testdir

fix we're using currently:

---
 fs/gfs2/acl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/gfs2/acl.c b/fs/gfs2/acl.c
index 3088e2a..8339754 100644
--- a/fs/gfs2/acl.c
+++ b/fs/gfs2/acl.c
@@ -73,7 +73,7 @@ int gfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 
        BUG_ON(name == NULL);
 
-       if (acl->a_count > GFS2_ACL_MAX_ENTRIES(GFS2_SB(inode)))
+       if ((acl) && (acl->a_count > GFS2_ACL_MAX_ENTRIES(GFS2_SB(inode))))
                return -E2BIG;
 
        if (type == ACL_TYPE_ACCESS) {
-- 
1.9.2

Thanks,

Andy

-- 
Andrew W. Elble
aweits at discipline.rit.edu
Infrastructure Engineer, Communications Technical Lead
Rochester Institute of Technology
PGP: BFAD 8461 4CCF DC95 DA2C B0EB 965B 082E 863E C912



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Cluster-devel] 3.18.5 kernel panic: fs/gfs2/acl.c:76
  2015-02-06 21:15 [Cluster-devel] 3.18.5 kernel panic: fs/gfs2/acl.c:76 Andrew W Elble
@ 2015-02-06 23:50 ` Andreas Gruenbacher
  2015-02-09 10:45   ` Andrew Price
  0 siblings, 1 reply; 4+ messages in thread
From: Andreas Gruenbacher @ 2015-02-06 23:50 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Andrew,

> 3.18.5 kernel crashing on acl deletion:
> 
> null pointer dereference in fs/gfs2/acl.c:76

this bug seems to exist since commit 2646a1f6 from October 2009.

> fix we're using currently:
> 
> ---
>  fs/gfs2/acl.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/gfs2/acl.c b/fs/gfs2/acl.c
> index 3088e2a..8339754 100644
> --- a/fs/gfs2/acl.c
> +++ b/fs/gfs2/acl.c
> @@ -73,7 +73,7 @@ int gfs2_set_acl(struct inode *inode, struct posix_acl
> *acl, int type)
>  
>         BUG_ON(name == NULL);
>  
> -       if (acl->a_count > GFS2_ACL_MAX_ENTRIES(GFS2_SB(inode)))
> +       if ((acl) && (acl->a_count > GFS2_ACL_MAX_ENTRIES(GFS2_SB(inode))))
>                 return -E2BIG;
>  
>         if (type == ACL_TYPE_ACCESS) {

Except for the extra parentheses this seems correct, thank you.

Andreas



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Cluster-devel] 3.18.5 kernel panic: fs/gfs2/acl.c:76
  2015-02-06 23:50 ` Andreas Gruenbacher
@ 2015-02-09 10:45   ` Andrew Price
  2015-02-09 14:17     ` Bob Peterson
  0 siblings, 1 reply; 4+ messages in thread
From: Andrew Price @ 2015-02-09 10:45 UTC (permalink / raw)
  To: cluster-devel.redhat.com

On 06/02/15 23:50, Andreas Gruenbacher wrote:
> Andrew,
>
>> 3.18.5 kernel crashing on acl deletion:
>>
>> null pointer dereference in fs/gfs2/acl.c:76
>
> this bug seems to exist since commit 2646a1f6 from October 2009.

The if-statement originates in 2646a1f6 but the bug was introduced by 
the deletion of a NULL check in e01580bf9e which was in December 2013.

>> fix we're using currently:
>>
>> ---
>>   fs/gfs2/acl.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/fs/gfs2/acl.c b/fs/gfs2/acl.c
>> index 3088e2a..8339754 100644
>> --- a/fs/gfs2/acl.c
>> +++ b/fs/gfs2/acl.c
>> @@ -73,7 +73,7 @@ int gfs2_set_acl(struct inode *inode, struct posix_acl
>> *acl, int type)
>>
>>          BUG_ON(name == NULL);
>>
>> -       if (acl->a_count > GFS2_ACL_MAX_ENTRIES(GFS2_SB(inode)))
>> +       if ((acl) && (acl->a_count > GFS2_ACL_MAX_ENTRIES(GFS2_SB(inode))))
>>                  return -E2BIG;
>>
>>          if (type == ACL_TYPE_ACCESS) {
>
> Except for the extra parentheses this seems correct, thank you.

Agreed. Good catch.

Thanks,
Andy



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Cluster-devel] 3.18.5 kernel panic: fs/gfs2/acl.c:76
  2015-02-09 10:45   ` Andrew Price
@ 2015-02-09 14:17     ` Bob Peterson
  0 siblings, 0 replies; 4+ messages in thread
From: Bob Peterson @ 2015-02-09 14:17 UTC (permalink / raw)
  To: cluster-devel.redhat.com

----- Original Message -----
> On 06/02/15 23:50, Andreas Gruenbacher wrote:
> > Andrew,
> >
> >> 3.18.5 kernel crashing on acl deletion:
> >>
> >> null pointer dereference in fs/gfs2/acl.c:76
> >
> > this bug seems to exist since commit 2646a1f6 from October 2009.
> 
> The if-statement originates in 2646a1f6 but the bug was introduced by
> the deletion of a NULL check in e01580bf9e which was in December 2013.
> 
> >> fix we're using currently:
> >>
> >> ---
> >>   fs/gfs2/acl.c | 2 +-
> >>   1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/fs/gfs2/acl.c b/fs/gfs2/acl.c
> >> index 3088e2a..8339754 100644
> >> --- a/fs/gfs2/acl.c
> >> +++ b/fs/gfs2/acl.c
> >> @@ -73,7 +73,7 @@ int gfs2_set_acl(struct inode *inode, struct posix_acl
> >> *acl, int type)
> >>
> >>          BUG_ON(name == NULL);
> >>
> >> -       if (acl->a_count > GFS2_ACL_MAX_ENTRIES(GFS2_SB(inode)))
> >> +       if ((acl) && (acl->a_count >
> >> GFS2_ACL_MAX_ENTRIES(GFS2_SB(inode))))
> >>                  return -E2BIG;
> >>
> >>          if (type == ACL_TYPE_ACCESS) {
> >
> > Except for the extra parentheses this seems correct, thank you.
> 
> Agreed. Good catch.
> 
> Thanks,
> Andy
Hi,

Christoph's patch, which introduced the problem, was never ported to RHEL7, so
let's just treat this as an upstream bug.

Andreas: I think maybe you should post your acl patch separately.

Andrew Elble:
I don't think we even need a bugzilla for this one. Do you want to just
post your latest patch (with fewer parentheses) to cluster-devel at redhat.com
so Steve Whitehouse can pick it up in the GFS2 nmw git tree? Then you can
get the credit.

Regards,

Bob Peterson
Red Hat File Systems



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-02-09 14:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-06 21:15 [Cluster-devel] 3.18.5 kernel panic: fs/gfs2/acl.c:76 Andrew W Elble
2015-02-06 23:50 ` Andreas Gruenbacher
2015-02-09 10:45   ` Andrew Price
2015-02-09 14:17     ` Bob Peterson

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.