kernel/kthread.c | 7 ------- 1 file changed, 7 deletions(-)
From: Bradley Morgan <brads@mainlining.org>
All kthread worker users now create their workers with
kthread_create_worker*(), which sets worker->task before the worker
starts. The self-assignment in kthread_worker_fn() is dead code now.
Remove it.
Signed-off-by: Bradley Morgan <brads@mainlining.org>
---
kernel/kthread.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/kernel/kthread.c b/kernel/kthread.c
index 63beb59b7a3d..18bc702e8d2d 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr)
struct kthread_worker *worker = worker_ptr;
struct kthread_work *work;
- /*
- * FIXME: Update the check and remove the assignment when all kthread
- * worker users are created using kthread_create_worker*() functions.
- */
- WARN_ON(worker->task && worker->task != current);
- worker->task = current;
-
if (worker->flags & KTW_FREEZABLE)
set_freezable();
--
2.47.3
Hi, Le Sat, Aug 29, 2026 at 04:18:48PM +0000, Bradley Morgan a écrit : > From: Bradley Morgan <brads@mainlining.org> > > All kthread worker users now create their workers with > kthread_create_worker*(), which sets worker->task before the worker > starts. The self-assignment in kthread_worker_fn() is dead code now. How could it be created before? > > Remove it. > > Signed-off-by: Bradley Morgan <brads@mainlining.org> > --- > kernel/kthread.c | 7 ------- > 1 file changed, 7 deletions(-) > > diff --git a/kernel/kthread.c b/kernel/kthread.c > index 63beb59b7a3d..18bc702e8d2d 100644 > --- a/kernel/kthread.c > +++ b/kernel/kthread.c > @@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr) > struct kthread_worker *worker = worker_ptr; > struct kthread_work *work; > > - /* > - * FIXME: Update the check and remove the assignment when all kthread > - * worker users are created using kthread_create_worker*() functions. > - */ > - WARN_ON(worker->task && worker->task != current); Should we keep a WARN_ON(worker->task != current) here? Thanks. > - worker->task = current; > - > if (worker->flags & KTW_FREEZABLE) > set_freezable(); > > -- > 2.47.3 -- Frederic Weisbecker SUSE Labs
On Tue, Sep 01, 2026 at 02:45:43PM +0200, Frederic Weisbecker wrote: > Hi, > > Le Sat, Aug 29, 2026 at 04:18:48PM +0000, Bradley Morgan a écrit : > > From: Bradley Morgan <brads@mainlining.org> > > > > All kthread worker users now create their workers with > > kthread_create_worker*(), which sets worker->task before the worker > > starts. The self-assignment in kthread_worker_fn() is dead code now. > > How could it be created before? > > > > > Remove it. > > > > Signed-off-by: Bradley Morgan <brads@mainlining.org> > > --- > > kernel/kthread.c | 7 ------- > > 1 file changed, 7 deletions(-) > > > > diff --git a/kernel/kthread.c b/kernel/kthread.c > > index 63beb59b7a3d..18bc702e8d2d 100644 > > --- a/kernel/kthread.c > > +++ b/kernel/kthread.c > > @@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr) > > struct kthread_worker *worker = worker_ptr; > > struct kthread_work *work; > > > > - /* > > - * FIXME: Update the check and remove the assignment when all kthread > > - * worker users are created using kthread_create_worker*() functions. > > - */ > > - WARN_ON(worker->task && worker->task != current); > > Should we keep a WARN_ON(worker->task != current) here? I vote yes! Paranoia is good :-)
On 1 September 2026 13:49:00 BST, Peter Zijlstra <peterz@infradead.org> wrote: >On Tue, Sep 01, 2026 at 02:45:43PM +0200, Frederic Weisbecker wrote: >> Hi, >> >> Le Sat, Aug 29, 2026 at 04:18:48PM +0000, Bradley Morgan a écrit : >> > From: Bradley Morgan <brads@mainlining.org> >> > >> > All kthread worker users now create their workers with >> > kthread_create_worker*(), which sets worker->task before the worker >> > starts. The self-assignment in kthread_worker_fn() is dead code now. >> >> How could it be created before? >> >> > >> > Remove it. >> > >> > Signed-off-by: Bradley Morgan <brads@mainlining.org> >> > --- >> > kernel/kthread.c | 7 ------- >> > 1 file changed, 7 deletions(-) >> > >> > diff --git a/kernel/kthread.c b/kernel/kthread.c >> > index 63beb59b7a3d..18bc702e8d2d 100644 >> > --- a/kernel/kthread.c >> > +++ b/kernel/kthread.c >> > @@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr) >> > struct kthread_worker *worker = worker_ptr; >> > struct kthread_work *work; >> > >> > - /* >> > - * FIXME: Update the check and remove the assignment when all kthread >> > - * worker users are created using kthread_create_worker*() functions. >> > - */ >> > - WARN_ON(worker->task && worker->task != current); >> >> Should we keep a WARN_ON(worker->task != current) here? > >I vote yes! Paranoia is good :-) > Yeah, but it *should* be useless. Do you really want me to readd the warn statement? Maybe add some text, like "worker->task is deprecated"? --- Thanks! https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/
Le Tue, Sep 01, 2026 at 02:57:38PM +0100, Bradley Morgan a écrit : > On 1 September 2026 13:49:00 BST, Peter Zijlstra <peterz@infradead.org> > wrote: > >On Tue, Sep 01, 2026 at 02:45:43PM +0200, Frederic Weisbecker wrote: > >> Hi, > >> > >> Le Sat, Aug 29, 2026 at 04:18:48PM +0000, Bradley Morgan a écrit : > >> > From: Bradley Morgan <brads@mainlining.org> > >> > > >> > All kthread worker users now create their workers with > >> > kthread_create_worker*(), which sets worker->task before the worker > >> > starts. The self-assignment in kthread_worker_fn() is dead code now. > >> > >> How could it be created before? > >> > >> > > >> > Remove it. > >> > > >> > Signed-off-by: Bradley Morgan <brads@mainlining.org> > >> > --- > >> > kernel/kthread.c | 7 ------- > >> > 1 file changed, 7 deletions(-) > >> > > >> > diff --git a/kernel/kthread.c b/kernel/kthread.c > >> > index 63beb59b7a3d..18bc702e8d2d 100644 > >> > --- a/kernel/kthread.c > >> > +++ b/kernel/kthread.c > >> > @@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr) > >> > struct kthread_worker *worker = worker_ptr; > >> > struct kthread_work *work; > >> > > >> > - /* > >> > - * FIXME: Update the check and remove the assignment when all kthread > >> > - * worker users are created using kthread_create_worker*() functions. > >> > - */ > >> > - WARN_ON(worker->task && worker->task != current); > >> > >> Should we keep a WARN_ON(worker->task != current) here? > > > >I vote yes! Paranoia is good :-) > > > > > Yeah, but it *should* be useless. Famous last words :-) > Do you really want me to readd the warn > statement? Maybe add some text, like > > "worker->task is deprecated"? Is it deprecated? We still need that field for wakeup on queue at least. Don't bother with a message, it's only a sanity check. Thanks. > > --- Thanks! > https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ -- Frederic Weisbecker SUSE Labs
On 1 September 2026 15:06:51 BST, Frederic Weisbecker <frederic@kernel.org> wrote: >Le Tue, Sep 01, 2026 at 02:57:38PM +0100, Bradley Morgan a écrit : >> On 1 September 2026 13:49:00 BST, Peter Zijlstra <peterz@infradead.org> >> wrote: >> >On Tue, Sep 01, 2026 at 02:45:43PM +0200, Frederic Weisbecker wrote: >> >> Hi, >> >> >> >> Le Sat, Aug 29, 2026 at 04:18:48PM +0000, Bradley Morgan a écrit : >> >> > From: Bradley Morgan <brads@mainlining.org> >> >> > >> >> > All kthread worker users now create their workers with >> >> > kthread_create_worker*(), which sets worker->task before the worker >> >> > starts. The self-assignment in kthread_worker_fn() is dead code >now. >> >> >> >> How could it be created before? >> >> >> >> > >> >> > Remove it. >> >> > >> >> > Signed-off-by: Bradley Morgan <brads@mainlining.org> >> >> > --- >> >> > kernel/kthread.c | 7 ------- >> >> > 1 file changed, 7 deletions(-) >> >> > >> >> > diff --git a/kernel/kthread.c b/kernel/kthread.c >> >> > index 63beb59b7a3d..18bc702e8d2d 100644 >> >> > --- a/kernel/kthread.c >> >> > +++ b/kernel/kthread.c >> >> > @@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr) >> >> > struct kthread_worker *worker = worker_ptr; >> >> > struct kthread_work *work; >> >> > >> >> > - /* >> >> > - * FIXME: Update the check and remove the assignment when all kthread >> >> > - * worker users are created using kthread_create_worker*() functions. >> >> > - */ >> >> > - WARN_ON(worker->task && worker->task != current); >> >> >> >> Should we keep a WARN_ON(worker->task != current) here? >> > >> >I vote yes! Paranoia is good :-) >> > >> >> >> Yeah, but it *should* be useless. > >Famous last words :-) > >> Do you really want me to readd the warn >> statement? Maybe add some text, like >> >> "worker->task is deprecated"? > >Is it deprecated? We still need that field for wakeup on queue at least. >Don't bother with a message, it's only a sanity check. > >Thanks. Hi, I hopped on the computer, Right, so the whole warn on things is good, but I converted all the callers, so it'll never fire. For OOT users, maybe this'll be beneficial (but yk what their like, theyll remove the warn on) Guys, what do you think? > >> >> --- Thanks! >> >https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ > > --- Thanks! https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/
Le Tue, Sep 01, 2026 at 07:28:19PM +0100, Bradley Morgan a écrit : > On 1 September 2026 15:06:51 BST, Frederic Weisbecker <frederic@kernel.org> > wrote: > >Le Tue, Sep 01, 2026 at 02:57:38PM +0100, Bradley Morgan a écrit : > >> On 1 September 2026 13:49:00 BST, Peter Zijlstra <peterz@infradead.org> > >> wrote: > >> >On Tue, Sep 01, 2026 at 02:45:43PM +0200, Frederic Weisbecker wrote: > >> >> Hi, > >> >> > >> >> Le Sat, Aug 29, 2026 at 04:18:48PM +0000, Bradley Morgan a écrit : > >> >> > From: Bradley Morgan <brads@mainlining.org> > >> >> > > >> >> > All kthread worker users now create their workers with > >> >> > kthread_create_worker*(), which sets worker->task before the worker > >> >> > starts. The self-assignment in kthread_worker_fn() is dead code > >now. > >> >> > >> >> How could it be created before? > >> >> > >> >> > > >> >> > Remove it. > >> >> > > >> >> > Signed-off-by: Bradley Morgan <brads@mainlining.org> > >> >> > --- > >> >> > kernel/kthread.c | 7 ------- > >> >> > 1 file changed, 7 deletions(-) > >> >> > > >> >> > diff --git a/kernel/kthread.c b/kernel/kthread.c > >> >> > index 63beb59b7a3d..18bc702e8d2d 100644 > >> >> > --- a/kernel/kthread.c > >> >> > +++ b/kernel/kthread.c > >> >> > @@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr) > >> >> > struct kthread_worker *worker = worker_ptr; > >> >> > struct kthread_work *work; > >> >> > > >> >> > - /* > >> >> > - * FIXME: Update the check and remove the assignment when all kthread > >> >> > - * worker users are created using kthread_create_worker*() functions. > >> >> > - */ > >> >> > - WARN_ON(worker->task && worker->task != current); > >> >> > >> >> Should we keep a WARN_ON(worker->task != current) here? > >> > > >> >I vote yes! Paranoia is good :-) > >> > > >> > >> > >> Yeah, but it *should* be useless. > > > >Famous last words :-) > > > >> Do you really want me to readd the warn > >> statement? Maybe add some text, like > >> > >> "worker->task is deprecated"? > > > >Is it deprecated? We still need that field for wakeup on queue at least. > >Don't bother with a message, it's only a sanity check. > > > >Thanks. > > Hi, I hopped on the computer, > > Right, so the whole warn on things is good, but I converted all the > callers, so it'll never fire. > > For OOT users, maybe this'll be beneficial (but yk what their like, theyll > remove the warn on) > > Guys, what do you think? The warning is mostly to prevent from future changes to break. Thanks. > > > > >> > >> --- Thanks! > >> > >https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ > > > > > > --- Thanks! > https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ -- Frederic Weisbecker SUSE Labs
On 1 September 2026 15:06:51 BST, Frederic Weisbecker <frederic@kernel.org> wrote: >Le Tue, Sep 01, 2026 at 02:57:38PM +0100, Bradley Morgan a écrit : >> On 1 September 2026 13:49:00 BST, Peter Zijlstra <peterz@infradead.org> >> wrote: >> >On Tue, Sep 01, 2026 at 02:45:43PM +0200, Frederic Weisbecker wrote: >> >> Hi, >> >> >> >> Le Sat, Aug 29, 2026 at 04:18:48PM +0000, Bradley Morgan a écrit : >> >> > From: Bradley Morgan <brads@mainlining.org> >> >> > >> >> > All kthread worker users now create their workers with >> >> > kthread_create_worker*(), which sets worker->task before the worker >> >> > starts. The self-assignment in kthread_worker_fn() is dead code >now. >> >> >> >> How could it be created before? >> >> >> >> > >> >> > Remove it. >> >> > >> >> > Signed-off-by: Bradley Morgan <brads@mainlining.org> >> >> > --- >> >> > kernel/kthread.c | 7 ------- >> >> > 1 file changed, 7 deletions(-) >> >> > >> >> > diff --git a/kernel/kthread.c b/kernel/kthread.c >> >> > index 63beb59b7a3d..18bc702e8d2d 100644 >> >> > --- a/kernel/kthread.c >> >> > +++ b/kernel/kthread.c >> >> > @@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr) >> >> > struct kthread_worker *worker = worker_ptr; >> >> > struct kthread_work *work; >> >> > >> >> > - /* >> >> > - * FIXME: Update the check and remove the assignment when all kthread >> >> > - * worker users are created using kthread_create_worker*() functions. >> >> > - */ >> >> > - WARN_ON(worker->task && worker->task != current); >> >> >> >> Should we keep a WARN_ON(worker->task != current) here? >> > >> >I vote yes! Paranoia is good :-) >> > >> >> >> Yeah, but it *should* be useless. > >Famous last words :-) > Hahahaha >> Do you really want me to readd the warn >> statement? Maybe add some text, like >> >> "worker->task is deprecated"? > >Is it deprecated? We still need that field for wakeup on queue at least. >Don't bother with a message, it's only a sanity check. Okie, I did convert all the drivers as you can see, if you wanna give it a lookie > >Thanks. > >> >> --- Thanks! >> >https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ > > --- Thanks! https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/
Le Tue, Sep 01, 2026 at 03:09:03PM +0100, Bradley Morgan a écrit : > On 1 September 2026 15:06:51 BST, Frederic Weisbecker <frederic@kernel.org> > wrote: > >Le Tue, Sep 01, 2026 at 02:57:38PM +0100, Bradley Morgan a écrit : > >> On 1 September 2026 13:49:00 BST, Peter Zijlstra <peterz@infradead.org> > >> wrote: > >> >On Tue, Sep 01, 2026 at 02:45:43PM +0200, Frederic Weisbecker wrote: > >> >> Hi, > >> >> > >> >> Le Sat, Aug 29, 2026 at 04:18:48PM +0000, Bradley Morgan a écrit : > >> >> > From: Bradley Morgan <brads@mainlining.org> > >> >> > > >> >> > All kthread worker users now create their workers with > >> >> > kthread_create_worker*(), which sets worker->task before the worker > >> >> > starts. The self-assignment in kthread_worker_fn() is dead code > >now. > >> >> > >> >> How could it be created before? > >> >> > >> >> > > >> >> > Remove it. > >> >> > > >> >> > Signed-off-by: Bradley Morgan <brads@mainlining.org> > >> >> > --- > >> >> > kernel/kthread.c | 7 ------- > >> >> > 1 file changed, 7 deletions(-) > >> >> > > >> >> > diff --git a/kernel/kthread.c b/kernel/kthread.c > >> >> > index 63beb59b7a3d..18bc702e8d2d 100644 > >> >> > --- a/kernel/kthread.c > >> >> > +++ b/kernel/kthread.c > >> >> > @@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr) > >> >> > struct kthread_worker *worker = worker_ptr; > >> >> > struct kthread_work *work; > >> >> > > >> >> > - /* > >> >> > - * FIXME: Update the check and remove the assignment when all kthread > >> >> > - * worker users are created using kthread_create_worker*() functions. > >> >> > - */ > >> >> > - WARN_ON(worker->task && worker->task != current); > >> >> > >> >> Should we keep a WARN_ON(worker->task != current) here? > >> > > >> >I vote yes! Paranoia is good :-) > >> > > >> > >> > >> Yeah, but it *should* be useless. > > > >Famous last words :-) > > > > Hahahaha > > >> Do you really want me to readd the warn > >> statement? Maybe add some text, like > >> > >> "worker->task is deprecated"? > > > >Is it deprecated? We still need that field for wakeup on queue at least. > >Don't bother with a message, it's only a sanity check. > > Okie, I did convert all the drivers as you can see, if you wanna give it a > lookie Do you have a link to that? Thanks. > > > > >Thanks. > > > >> > >> --- Thanks! > >> > >https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ > > > > > > --- Thanks! > https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ -- Frederic Weisbecker SUSE Labs
On 2 September 2026 15:09:05 BST, Frederic Weisbecker <frederic@kernel.org> wrote: >Le Tue, Sep 01, 2026 at 03:09:03PM +0100, Bradley Morgan a écrit : >> On 1 September 2026 15:06:51 BST, Frederic Weisbecker ><frederic@kernel.org> >> wrote: >> >Le Tue, Sep 01, 2026 at 02:57:38PM +0100, Bradley Morgan a écrit : >> >> On 1 September 2026 13:49:00 BST, Peter Zijlstra ><peterz@infradead.org> >> >> wrote: >> >> >On Tue, Sep 01, 2026 at 02:45:43PM +0200, Frederic Weisbecker wrote: >> >> >> Hi, >> >> >> >> >> >> Le Sat, Aug 29, 2026 at 04:18:48PM +0000, Bradley Morgan a écrit : >> >> >> > From: Bradley Morgan <brads@mainlining.org> >> >> >> > >> >> >> > All kthread worker users now create their workers with >> >> >> > kthread_create_worker*(), which sets worker->task before the >worker >> >> >> > starts. The self-assignment in kthread_worker_fn() is dead code >> >now. >> >> >> >> >> >> How could it be created before? >> >> >> >> >> >> > >> >> >> > Remove it. >> >> >> > >> >> >> > Signed-off-by: Bradley Morgan <brads@mainlining.org> >> >> >> > --- >> >> >> > kernel/kthread.c | 7 ------- >> >> >> > 1 file changed, 7 deletions(-) >> >> >> > >> >> >> > diff --git a/kernel/kthread.c b/kernel/kthread.c >> >> >> > index 63beb59b7a3d..18bc702e8d2d 100644 >> >> >> > --- a/kernel/kthread.c >> >> >> > +++ b/kernel/kthread.c >> >> >> > @@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr) >> >> >> > struct kthread_worker *worker = worker_ptr; >> >> >> > struct kthread_work *work; >> >> >> > >> >> >> > - /* >> >> >> > - * FIXME: Update the check and remove the assignment when all kthread >> >> >> > - * worker users are created using kthread_create_worker*() functions. >> >> >> > - */ >> >> >> > - WARN_ON(worker->task && worker->task != current); >> >> >> >> >> >> Should we keep a WARN_ON(worker->task != current) here? >> >> > >> >> >I vote yes! Paranoia is good :-) >> >> > >> >> >> >> >> >> Yeah, but it *should* be useless. >> > >> >Famous last words :-) >> > >> >> Hahahaha >> >> >> Do you really want me to readd the warn >> >> statement? Maybe add some text, like >> >> >> >> "worker->task is deprecated"? >> > >> >Is it deprecated? We still need that field for wakeup on queue at >least. >> >Don't bother with a message, it's only a sanity check. >> >> Okie, I did convert all the drivers as you can see, if you wanna give it >a >> lookie > >Do you have a link to that? > >Thanks. uhh, they should be all in-reply-tos, so if you search for my series in lore, this patch replies to all of the conversions > >> >> > >> >Thanks. >> > >> >> >> >> --- Thanks! >> >> >> >>https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ >> > >> > >> >> --- Thanks! >> >https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ > > --- Thanks! https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/
On 1 September 2026 14:57:38 BST, Bradley Morgan <brads@mainlining.org> wrote: >On 1 September 2026 13:49:00 BST, Peter Zijlstra <peterz@infradead.org> >wrote: >>On Tue, Sep 01, 2026 at 02:45:43PM +0200, Frederic Weisbecker wrote: >>> Hi, >>> >>> Le Sat, Aug 29, 2026 at 04:18:48PM +0000, Bradley Morgan a écrit : >>> > From: Bradley Morgan <brads@mainlining.org> >>> > >>> > All kthread worker users now create their workers with >>> > kthread_create_worker*(), which sets worker->task before the worker >>> > starts. The self-assignment in kthread_worker_fn() is dead code now. >>> >>> How could it be created before? >>> >>> > >>> > Remove it. >>> > >>> > Signed-off-by: Bradley Morgan <brads@mainlining.org> >>> > --- >>> > kernel/kthread.c | 7 ------- >>> > 1 file changed, 7 deletions(-) >>> > >>> > diff --git a/kernel/kthread.c b/kernel/kthread.c >>> > index 63beb59b7a3d..18bc702e8d2d 100644 >>> > --- a/kernel/kthread.c >>> > +++ b/kernel/kthread.c >>> > @@ -987,13 +987,6 @@ int kthread_worker_fn(void *worker_ptr) >>> > struct kthread_worker *worker = worker_ptr; >>> > struct kthread_work *work; >>> > >>> > - /* >>> > - * FIXME: Update the check and remove the assignment when all kthread >>> > - * worker users are created using kthread_create_worker*() functions. >>> > - */ >>> > - WARN_ON(worker->task && worker->task != current); >>> >>> Should we keep a WARN_ON(worker->task != current) here? >> >>I vote yes! Paranoia is good :-) >> > > >Yeah, but it *should* be useless. Do you really want me to readd the warn >statement? Maybe add some text, like > >"worker->task is deprecated"? Btw this is a "something around the lines of", so it's definitely not gonna be this! (Its sorta wrong too) > >--- Thanks! >https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ --- Thanks! https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/
© 2016 - 2026 Red Hat, Inc.