* [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
@ 2022-05-08 10:06 ` Kees Cook
0 siblings, 0 replies; 12+ messages in thread
From: Kees Cook @ 2022-05-08 10:06 UTC (permalink / raw)
To: Bob Peterson
Cc: Kees Cook, kernel test robot, Andreas Gruenbacher, Bill Wendling,
cluster-devel, Nathan Chancellor, Nick Desaulniers, Tom Rix,
Steven Whitehouse, linux-kernel
Clang's structure layout randomization feature gets upset when it sees
struct address_space (which is randomized) cast to struct gfs2_glock.
This is due to seeing the mapping pointer as being treated as an array
of gfs2_glock, rather than "something else, before struct address_space":
In file included from fs/gfs2/acl.c:23:
fs/gfs2/meta_io.h:44:12: error: casting from randomized structure pointer type 'struct address_space *' to 'struct gfs2_glock *'
return (((struct gfs2_glock *)mapping) - 1)->gl_name.ln_sbd;
^
Replace the instances of open-coded pointer math with container_of()
usage, and update the allocator to match.
Reported-by: kernel test robot <lkp@intel.com>
Link: https://lore.kernel.org/lkml/202205041550.naKxwCBj-lkp@intel.com
Cc: Bob Peterson <rpeterso@redhat.com>
Cc: Andreas Gruenbacher <agruenba@redhat.com>
Cc: Bill Wendling <morbo@google.com>
Cc: cluster-devel@redhat.com
Signed-off-by: Kees Cook <keescook@chromium.org>
---
This another fix uncovered by the Clang randstruct series[1], so it'd
probably make more sense to land via my tree. Do you have a preference?
[1] https://lore.kernel.org/all/20220503205503.3054173-1-keescook@chromium.org/
---
fs/gfs2/glock.h | 8 +++++++-
fs/gfs2/main.c | 10 ++++------
fs/gfs2/meta_io.h | 2 +-
3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h
index 4f8642301801..2607c7d26640 100644
--- a/fs/gfs2/glock.h
+++ b/fs/gfs2/glock.h
@@ -138,6 +138,12 @@ struct lm_lockops {
const match_table_t *lm_tokens;
};
+/* gfs2_glock_get(), "glock" must be first. */
+struct glock_aspace {
+ struct gfs2_glock glock;
+ struct address_space mapping;
+};
+
extern struct workqueue_struct *gfs2_delete_workqueue;
static inline struct gfs2_holder *gfs2_glock_is_locked_by_me(struct gfs2_glock *gl)
{
@@ -180,7 +186,7 @@ static inline int gfs2_glock_is_held_shrd(struct gfs2_glock *gl)
static inline struct address_space *gfs2_glock2aspace(struct gfs2_glock *gl)
{
if (gl->gl_ops->go_flags & GLOF_ASPACE)
- return (struct address_space *)(gl + 1);
+ return &(container_of(gl, struct glock_aspace, glock)->mapping);
return NULL;
}
diff --git a/fs/gfs2/main.c b/fs/gfs2/main.c
index 28d0eb23e18e..984bd60d01db 100644
--- a/fs/gfs2/main.c
+++ b/fs/gfs2/main.c
@@ -62,11 +62,10 @@ static void gfs2_init_glock_once(void *foo)
static void gfs2_init_gl_aspace_once(void *foo)
{
- struct gfs2_glock *gl = foo;
- struct address_space *mapping = (struct address_space *)(gl + 1);
+ struct glock_aspace *gl_aspace = foo;
- gfs2_init_glock_once(gl);
- address_space_init_once(mapping);
+ gfs2_init_glock_once(&gl_aspace->glock);
+ address_space_init_once(&gl_aspace->mapping);
}
/**
@@ -104,8 +103,7 @@ static int __init init_gfs2_fs(void)
goto fail_cachep1;
gfs2_glock_aspace_cachep = kmem_cache_create("gfs2_glock(aspace)",
- sizeof(struct gfs2_glock) +
- sizeof(struct address_space),
+ sizeof(struct glock_aspace),
0, 0, gfs2_init_gl_aspace_once);
if (!gfs2_glock_aspace_cachep)
diff --git a/fs/gfs2/meta_io.h b/fs/gfs2/meta_io.h
index 21880d72081a..2e2f88cfb7ad 100644
--- a/fs/gfs2/meta_io.h
+++ b/fs/gfs2/meta_io.h
@@ -41,7 +41,7 @@ static inline struct gfs2_sbd *gfs2_mapping2sbd(struct address_space *mapping)
{
struct inode *inode = mapping->host;
if (mapping->a_ops == &gfs2_meta_aops)
- return (((struct gfs2_glock *)mapping) - 1)->gl_name.ln_sbd;
+ return container_of(mapping, struct glock_aspace, mapping)->glock.gl_name.ln_sbd;
else if (mapping->a_ops == &gfs2_rgrp_aops)
return container_of(mapping, struct gfs2_sbd, sd_aspace);
else
--
2.32.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Cluster-devel] [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
@ 2022-05-08 10:06 ` Kees Cook
0 siblings, 0 replies; 12+ messages in thread
From: Kees Cook @ 2022-05-08 10:06 UTC (permalink / raw)
To: cluster-devel.redhat.com
Clang's structure layout randomization feature gets upset when it sees
struct address_space (which is randomized) cast to struct gfs2_glock.
This is due to seeing the mapping pointer as being treated as an array
of gfs2_glock, rather than "something else, before struct address_space":
In file included from fs/gfs2/acl.c:23:
fs/gfs2/meta_io.h:44:12: error: casting from randomized structure pointer type 'struct address_space *' to 'struct gfs2_glock *'
return (((struct gfs2_glock *)mapping) - 1)->gl_name.ln_sbd;
^
Replace the instances of open-coded pointer math with container_of()
usage, and update the allocator to match.
Reported-by: kernel test robot <lkp@intel.com>
Link: https://lore.kernel.org/lkml/202205041550.naKxwCBj-lkp at intel.com
Cc: Bob Peterson <rpeterso@redhat.com>
Cc: Andreas Gruenbacher <agruenba@redhat.com>
Cc: Bill Wendling <morbo@google.com>
Cc: cluster-devel at redhat.com
Signed-off-by: Kees Cook <keescook@chromium.org>
---
This another fix uncovered by the Clang randstruct series[1], so it'd
probably make more sense to land via my tree. Do you have a preference?
[1] https://lore.kernel.org/all/20220503205503.3054173-1-keescook at chromium.org/
---
fs/gfs2/glock.h | 8 +++++++-
fs/gfs2/main.c | 10 ++++------
fs/gfs2/meta_io.h | 2 +-
3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h
index 4f8642301801..2607c7d26640 100644
--- a/fs/gfs2/glock.h
+++ b/fs/gfs2/glock.h
@@ -138,6 +138,12 @@ struct lm_lockops {
const match_table_t *lm_tokens;
};
+/* gfs2_glock_get(), "glock" must be first. */
+struct glock_aspace {
+ struct gfs2_glock glock;
+ struct address_space mapping;
+};
+
extern struct workqueue_struct *gfs2_delete_workqueue;
static inline struct gfs2_holder *gfs2_glock_is_locked_by_me(struct gfs2_glock *gl)
{
@@ -180,7 +186,7 @@ static inline int gfs2_glock_is_held_shrd(struct gfs2_glock *gl)
static inline struct address_space *gfs2_glock2aspace(struct gfs2_glock *gl)
{
if (gl->gl_ops->go_flags & GLOF_ASPACE)
- return (struct address_space *)(gl + 1);
+ return &(container_of(gl, struct glock_aspace, glock)->mapping);
return NULL;
}
diff --git a/fs/gfs2/main.c b/fs/gfs2/main.c
index 28d0eb23e18e..984bd60d01db 100644
--- a/fs/gfs2/main.c
+++ b/fs/gfs2/main.c
@@ -62,11 +62,10 @@ static void gfs2_init_glock_once(void *foo)
static void gfs2_init_gl_aspace_once(void *foo)
{
- struct gfs2_glock *gl = foo;
- struct address_space *mapping = (struct address_space *)(gl + 1);
+ struct glock_aspace *gl_aspace = foo;
- gfs2_init_glock_once(gl);
- address_space_init_once(mapping);
+ gfs2_init_glock_once(&gl_aspace->glock);
+ address_space_init_once(&gl_aspace->mapping);
}
/**
@@ -104,8 +103,7 @@ static int __init init_gfs2_fs(void)
goto fail_cachep1;
gfs2_glock_aspace_cachep = kmem_cache_create("gfs2_glock(aspace)",
- sizeof(struct gfs2_glock) +
- sizeof(struct address_space),
+ sizeof(struct glock_aspace),
0, 0, gfs2_init_gl_aspace_once);
if (!gfs2_glock_aspace_cachep)
diff --git a/fs/gfs2/meta_io.h b/fs/gfs2/meta_io.h
index 21880d72081a..2e2f88cfb7ad 100644
--- a/fs/gfs2/meta_io.h
+++ b/fs/gfs2/meta_io.h
@@ -41,7 +41,7 @@ static inline struct gfs2_sbd *gfs2_mapping2sbd(struct address_space *mapping)
{
struct inode *inode = mapping->host;
if (mapping->a_ops == &gfs2_meta_aops)
- return (((struct gfs2_glock *)mapping) - 1)->gl_name.ln_sbd;
+ return container_of(mapping, struct glock_aspace, mapping)->glock.gl_name.ln_sbd;
else if (mapping->a_ops == &gfs2_rgrp_aops)
return container_of(mapping, struct gfs2_sbd, sd_aspace);
else
--
2.32.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
2022-05-08 10:06 ` [Cluster-devel] " Kees Cook
@ 2022-05-10 7:13 ` Christoph Hellwig
-1 siblings, 0 replies; 12+ messages in thread
From: Christoph Hellwig @ 2022-05-10 7:13 UTC (permalink / raw)
To: Kees Cook
Cc: Bob Peterson, kernel test robot, Andreas Gruenbacher,
Bill Wendling, cluster-devel, Nathan Chancellor,
Nick Desaulniers, Tom Rix, Steven Whitehouse, linux-kernel
> +/* gfs2_glock_get(), "glock" must be first. */
> +struct glock_aspace {
> + struct gfs2_glock glock;
> + struct address_space mapping;
> +};
Why does glock need to be first? The whole point of using container_of
is that we don't have to make that assumption.
> static inline struct address_space *gfs2_glock2aspace(struct gfs2_glock *gl)
> {
> if (gl->gl_ops->go_flags & GLOF_ASPACE)
> - return (struct address_space *)(gl + 1);
> + return &(container_of(gl, struct glock_aspace, glock)->mapping);
Do we even need the braces here?
> struct inode *inode = mapping->host;
> if (mapping->a_ops == &gfs2_meta_aops)
> - return (((struct gfs2_glock *)mapping) - 1)->gl_name.ln_sbd;
> + return container_of(mapping, struct glock_aspace, mapping)->glock.gl_name.ln_sbd;
A local variable would be really nice for the reader here to decompose
this a bit:
struct glock_aspace *a =
container_of(mapping, struct glock_aspace, mapping);
return a->glock.gl_name.ln_sbd;
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Cluster-devel] [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
@ 2022-05-10 7:13 ` Christoph Hellwig
0 siblings, 0 replies; 12+ messages in thread
From: Christoph Hellwig @ 2022-05-10 7:13 UTC (permalink / raw)
To: cluster-devel.redhat.com
> +/* gfs2_glock_get(), "glock" must be first. */
> +struct glock_aspace {
> + struct gfs2_glock glock;
> + struct address_space mapping;
> +};
Why does glock need to be first? The whole point of using container_of
is that we don't have to make that assumption.
> static inline struct address_space *gfs2_glock2aspace(struct gfs2_glock *gl)
> {
> if (gl->gl_ops->go_flags & GLOF_ASPACE)
> - return (struct address_space *)(gl + 1);
> + return &(container_of(gl, struct glock_aspace, glock)->mapping);
Do we even need the braces here?
> struct inode *inode = mapping->host;
> if (mapping->a_ops == &gfs2_meta_aops)
> - return (((struct gfs2_glock *)mapping) - 1)->gl_name.ln_sbd;
> + return container_of(mapping, struct glock_aspace, mapping)->glock.gl_name.ln_sbd;
A local variable would be really nice for the reader here to decompose
this a bit:
struct glock_aspace *a =
container_of(mapping, struct glock_aspace, mapping);
return a->glock.gl_name.ln_sbd;
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
2022-05-10 7:13 ` [Cluster-devel] " Christoph Hellwig
@ 2022-05-10 11:13 ` Andreas Gruenbacher
-1 siblings, 0 replies; 12+ messages in thread
From: Andreas Gruenbacher @ 2022-05-10 11:13 UTC (permalink / raw)
To: Kees Cook, Christoph Hellwig
Cc: Bob Peterson, kernel test robot, Bill Wendling, cluster-devel,
Nathan Chancellor, Nick Desaulniers, Tom Rix, Steven Whitehouse,
LKML
Kees and Christoph,
thanks for the patch and review.
On Tue, May 10, 2022 at 9:29 AM Christoph Hellwig <hch@infradead.org> wrote:
> > +/* gfs2_glock_get(), "glock" must be first. */
> > +struct glock_aspace {
> > + struct gfs2_glock glock;
> > + struct address_space mapping;
> > +};
>
> Why does glock need to be first? The whole point of using container_of
> is that we don't have to make that assumption.
Just needs to be cleaned up in gfs2_glock_get() and
gfs2_glock_dealloc() as well. I'll do that when applying the patch.
> > static inline struct address_space *gfs2_glock2aspace(struct gfs2_glock *gl)
> > {
> > if (gl->gl_ops->go_flags & GLOF_ASPACE)
> > - return (struct address_space *)(gl + 1);
> > + return &(container_of(gl, struct glock_aspace, glock)->mapping);
>
> Do we even need the braces here?
Will use a local variable here, as suggested below.
> > struct inode *inode = mapping->host;
> > if (mapping->a_ops == &gfs2_meta_aops)
> > - return (((struct gfs2_glock *)mapping) - 1)->gl_name.ln_sbd;
> > + return container_of(mapping, struct glock_aspace, mapping)->glock.gl_name.ln_sbd;
>
> A local variable would be really nice for the reader here to decompose
> this a bit:
>
> struct glock_aspace *a =
> container_of(mapping, struct glock_aspace, mapping);
>
> return a->glock.gl_name.ln_sbd;
Yes.
Thanks,
Andreas
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Cluster-devel] [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
@ 2022-05-10 11:13 ` Andreas Gruenbacher
0 siblings, 0 replies; 12+ messages in thread
From: Andreas Gruenbacher @ 2022-05-10 11:13 UTC (permalink / raw)
To: cluster-devel.redhat.com
Kees and Christoph,
thanks for the patch and review.
On Tue, May 10, 2022 at 9:29 AM Christoph Hellwig <hch@infradead.org> wrote:
> > +/* gfs2_glock_get(), "glock" must be first. */
> > +struct glock_aspace {
> > + struct gfs2_glock glock;
> > + struct address_space mapping;
> > +};
>
> Why does glock need to be first? The whole point of using container_of
> is that we don't have to make that assumption.
Just needs to be cleaned up in gfs2_glock_get() and
gfs2_glock_dealloc() as well. I'll do that when applying the patch.
> > static inline struct address_space *gfs2_glock2aspace(struct gfs2_glock *gl)
> > {
> > if (gl->gl_ops->go_flags & GLOF_ASPACE)
> > - return (struct address_space *)(gl + 1);
> > + return &(container_of(gl, struct glock_aspace, glock)->mapping);
>
> Do we even need the braces here?
Will use a local variable here, as suggested below.
> > struct inode *inode = mapping->host;
> > if (mapping->a_ops == &gfs2_meta_aops)
> > - return (((struct gfs2_glock *)mapping) - 1)->gl_name.ln_sbd;
> > + return container_of(mapping, struct glock_aspace, mapping)->glock.gl_name.ln_sbd;
>
> A local variable would be really nice for the reader here to decompose
> this a bit:
>
> struct glock_aspace *a =
> container_of(mapping, struct glock_aspace, mapping);
>
> return a->glock.gl_name.ln_sbd;
Yes.
Thanks,
Andreas
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
2022-05-10 11:13 ` [Cluster-devel] " Andreas Gruenbacher
@ 2022-05-10 15:51 ` Kees Cook
-1 siblings, 0 replies; 12+ messages in thread
From: Kees Cook @ 2022-05-10 15:51 UTC (permalink / raw)
To: Andreas Gruenbacher
Cc: Christoph Hellwig, Bob Peterson, kernel test robot,
Bill Wendling, cluster-devel, Nathan Chancellor,
Nick Desaulniers, Tom Rix, Steven Whitehouse, LKML
On Tue, May 10, 2022 at 01:13:31PM +0200, Andreas Gruenbacher wrote:
> Kees and Christoph,
>
> thanks for the patch and review.
>
> On Tue, May 10, 2022 at 9:29 AM Christoph Hellwig <hch@infradead.org> wrote:
> > > +/* gfs2_glock_get(), "glock" must be first. */
> > > +struct glock_aspace {
> > > + struct gfs2_glock glock;
> > > + struct address_space mapping;
> > > +};
> >
> > Why does glock need to be first? The whole point of using container_of
> > is that we don't have to make that assumption.
>
> Just needs to be cleaned up in gfs2_glock_get() and
> gfs2_glock_dealloc() as well. I'll do that when applying the patch.
>
> > > static inline struct address_space *gfs2_glock2aspace(struct gfs2_glock *gl)
> > > {
> > > if (gl->gl_ops->go_flags & GLOF_ASPACE)
> > > - return (struct address_space *)(gl + 1);
> > > + return &(container_of(gl, struct glock_aspace, glock)->mapping);
> >
> > Do we even need the braces here?
>
> Will use a local variable here, as suggested below.
>
> > > struct inode *inode = mapping->host;
> > > if (mapping->a_ops == &gfs2_meta_aops)
> > > - return (((struct gfs2_glock *)mapping) - 1)->gl_name.ln_sbd;
> > > + return container_of(mapping, struct glock_aspace, mapping)->glock.gl_name.ln_sbd;
> >
> > A local variable would be really nice for the reader here to decompose
> > this a bit:
> >
> > struct glock_aspace *a =
> > container_of(mapping, struct glock_aspace, mapping);
> >
> > return a->glock.gl_name.ln_sbd;
>
> Yes.
Thanks! So I should leave this with you to arrange, or should I send an
updated patch?
--
Kees Cook
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Cluster-devel] [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
@ 2022-05-10 15:51 ` Kees Cook
0 siblings, 0 replies; 12+ messages in thread
From: Kees Cook @ 2022-05-10 15:51 UTC (permalink / raw)
To: cluster-devel.redhat.com
On Tue, May 10, 2022 at 01:13:31PM +0200, Andreas Gruenbacher wrote:
> Kees and Christoph,
>
> thanks for the patch and review.
>
> On Tue, May 10, 2022 at 9:29 AM Christoph Hellwig <hch@infradead.org> wrote:
> > > +/* gfs2_glock_get(), "glock" must be first. */
> > > +struct glock_aspace {
> > > + struct gfs2_glock glock;
> > > + struct address_space mapping;
> > > +};
> >
> > Why does glock need to be first? The whole point of using container_of
> > is that we don't have to make that assumption.
>
> Just needs to be cleaned up in gfs2_glock_get() and
> gfs2_glock_dealloc() as well. I'll do that when applying the patch.
>
> > > static inline struct address_space *gfs2_glock2aspace(struct gfs2_glock *gl)
> > > {
> > > if (gl->gl_ops->go_flags & GLOF_ASPACE)
> > > - return (struct address_space *)(gl + 1);
> > > + return &(container_of(gl, struct glock_aspace, glock)->mapping);
> >
> > Do we even need the braces here?
>
> Will use a local variable here, as suggested below.
>
> > > struct inode *inode = mapping->host;
> > > if (mapping->a_ops == &gfs2_meta_aops)
> > > - return (((struct gfs2_glock *)mapping) - 1)->gl_name.ln_sbd;
> > > + return container_of(mapping, struct glock_aspace, mapping)->glock.gl_name.ln_sbd;
> >
> > A local variable would be really nice for the reader here to decompose
> > this a bit:
> >
> > struct glock_aspace *a =
> > container_of(mapping, struct glock_aspace, mapping);
> >
> > return a->glock.gl_name.ln_sbd;
>
> Yes.
Thanks! So I should leave this with you to arrange, or should I send an
updated patch?
--
Kees Cook
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
2022-05-10 15:51 ` [Cluster-devel] " Kees Cook
@ 2022-05-10 16:16 ` Andreas Gruenbacher
-1 siblings, 0 replies; 12+ messages in thread
From: Andreas Gruenbacher @ 2022-05-10 16:16 UTC (permalink / raw)
To: Kees Cook
Cc: Christoph Hellwig, Bob Peterson, kernel test robot,
Bill Wendling, cluster-devel, Nathan Chancellor,
Nick Desaulniers, Tom Rix, Steven Whitehouse, LKML
Kees,
On Tue, May 10, 2022 at 5:51 PM Kees Cook <keescook@chromium.org> wrote:
> Thanks! So I should leave this with you to arrange, or should I send an
> updated patch?
are you happy with this?
https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git/commit/?id=833ab609b94f6
Thanks,
Andreas
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Cluster-devel] [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
@ 2022-05-10 16:16 ` Andreas Gruenbacher
0 siblings, 0 replies; 12+ messages in thread
From: Andreas Gruenbacher @ 2022-05-10 16:16 UTC (permalink / raw)
To: cluster-devel.redhat.com
Kees,
On Tue, May 10, 2022 at 5:51 PM Kees Cook <keescook@chromium.org> wrote:
> Thanks! So I should leave this with you to arrange, or should I send an
> updated patch?
are you happy with this?
https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git/commit/?id=833ab609b94f6
Thanks,
Andreas
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
2022-05-10 16:16 ` [Cluster-devel] " Andreas Gruenbacher
@ 2022-05-10 17:55 ` Kees Cook
-1 siblings, 0 replies; 12+ messages in thread
From: Kees Cook @ 2022-05-10 17:55 UTC (permalink / raw)
To: Andreas Gruenbacher
Cc: Christoph Hellwig, Bob Peterson, kernel test robot,
Bill Wendling, cluster-devel, Nathan Chancellor,
Nick Desaulniers, Tom Rix, Steven Whitehouse, LKML
On Tue, May 10, 2022 at 06:16:30PM +0200, Andreas Gruenbacher wrote:
> Kees,
>
> On Tue, May 10, 2022 at 5:51 PM Kees Cook <keescook@chromium.org> wrote:
> > Thanks! So I should leave this with you to arrange, or should I send an
> > updated patch?
>
> are you happy with this?
>
> https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git/commit/?id=833ab609b94f6
>
Sure; looks great! You should credit yourself with the code changes,
maybe, with:
Co-developed-by: Andreas Gruenbacher <agruenba@redhat.com>
Thanks!
--
Kees Cook
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Cluster-devel] [PATCH] gfs2: Use container_of() for gfs2_glock(aspace)
@ 2022-05-10 17:55 ` Kees Cook
0 siblings, 0 replies; 12+ messages in thread
From: Kees Cook @ 2022-05-10 17:55 UTC (permalink / raw)
To: cluster-devel.redhat.com
On Tue, May 10, 2022 at 06:16:30PM +0200, Andreas Gruenbacher wrote:
> Kees,
>
> On Tue, May 10, 2022 at 5:51 PM Kees Cook <keescook@chromium.org> wrote:
> > Thanks! So I should leave this with you to arrange, or should I send an
> > updated patch?
>
> are you happy with this?
>
> https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git/commit/?id=833ab609b94f6
>
Sure; looks great! You should credit yourself with the code changes,
maybe, with:
Co-developed-by: Andreas Gruenbacher <agruenba@redhat.com>
Thanks!
--
Kees Cook
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2022-05-10 17:56 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-08 10:06 [PATCH] gfs2: Use container_of() for gfs2_glock(aspace) Kees Cook
2022-05-08 10:06 ` [Cluster-devel] " Kees Cook
2022-05-10 7:13 ` Christoph Hellwig
2022-05-10 7:13 ` [Cluster-devel] " Christoph Hellwig
2022-05-10 11:13 ` Andreas Gruenbacher
2022-05-10 11:13 ` [Cluster-devel] " Andreas Gruenbacher
2022-05-10 15:51 ` Kees Cook
2022-05-10 15:51 ` [Cluster-devel] " Kees Cook
2022-05-10 16:16 ` Andreas Gruenbacher
2022-05-10 16:16 ` [Cluster-devel] " Andreas Gruenbacher
2022-05-10 17:55 ` Kees Cook
2022-05-10 17:55 ` [Cluster-devel] " Kees Cook
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.