* [PATCH v2 1/7] android/binder: don't abuse current->group_leader
2026-01-25 16:06 [PATCH v2 0/7] don't abuse task_struct.group_leader Oleg Nesterov
@ 2026-01-25 16:07 ` Oleg Nesterov
2026-01-25 16:07 ` [PATCH v2 2/7] android/binder: use same_thread_group(proc->tsk, current) in binder_mmap() Oleg Nesterov
` (5 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Oleg Nesterov @ 2026-01-25 16:07 UTC (permalink / raw)
To: Andrew Morton
Cc: Alice Ryhl, Boris Brezillon, Christian König, Felix Kuehling,
Leon Romanovsky, Steven Price, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, linux-kernel, amd-gfx,
dri-devel, linux-rdma, netdev
Cleanup and preparation to simplify the next changes.
- Use current->tgid instead of current->group_leader->pid
- Use the value returned by get_task_struct() to initialize proc->tsk
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
---
drivers/android/binder.c | 7 +++----
drivers/android/binder_alloc.c | 2 +-
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 535fc881c8da..dea701daabb0 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -6046,7 +6046,7 @@ static int binder_open(struct inode *nodp, struct file *filp)
bool existing_pid = false;
binder_debug(BINDER_DEBUG_OPEN_CLOSE, "%s: %d:%d\n", __func__,
- current->group_leader->pid, current->pid);
+ current->tgid, current->pid);
proc = kzalloc(sizeof(*proc), GFP_KERNEL);
if (proc == NULL)
@@ -6055,8 +6055,8 @@ static int binder_open(struct inode *nodp, struct file *filp)
dbitmap_init(&proc->dmap);
spin_lock_init(&proc->inner_lock);
spin_lock_init(&proc->outer_lock);
- get_task_struct(current->group_leader);
- proc->tsk = current->group_leader;
+ proc->tsk = get_task_struct(current->group_leader);
+ proc->pid = current->tgid;
proc->cred = get_cred(filp->f_cred);
INIT_LIST_HEAD(&proc->todo);
init_waitqueue_head(&proc->freeze_wait);
@@ -6075,7 +6075,6 @@ static int binder_open(struct inode *nodp, struct file *filp)
binder_alloc_init(&proc->alloc);
binder_stats_created(BINDER_STAT_PROC);
- proc->pid = current->group_leader->pid;
INIT_LIST_HEAD(&proc->delivered_death);
INIT_LIST_HEAD(&proc->delivered_freeze);
INIT_LIST_HEAD(&proc->waiting_threads);
diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c
index 979c96b74cad..145ed5f14cdb 100644
--- a/drivers/android/binder_alloc.c
+++ b/drivers/android/binder_alloc.c
@@ -1233,7 +1233,7 @@ static struct shrinker *binder_shrinker;
VISIBLE_IF_KUNIT void __binder_alloc_init(struct binder_alloc *alloc,
struct list_lru *freelist)
{
- alloc->pid = current->group_leader->pid;
+ alloc->pid = current->tgid;
alloc->mm = current->mm;
mmgrab(alloc->mm);
mutex_init(&alloc->mutex);
--
2.52.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v2 2/7] android/binder: use same_thread_group(proc->tsk, current) in binder_mmap()
2026-01-25 16:06 [PATCH v2 0/7] don't abuse task_struct.group_leader Oleg Nesterov
2026-01-25 16:07 ` [PATCH v2 1/7] android/binder: don't abuse current->group_leader Oleg Nesterov
@ 2026-01-25 16:07 ` Oleg Nesterov
2026-01-25 16:07 ` [PATCH v2 3/7] drm/amdgpu: don't abuse current->group_leader Oleg Nesterov
` (4 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Oleg Nesterov @ 2026-01-25 16:07 UTC (permalink / raw)
To: Andrew Morton
Cc: Alice Ryhl, Boris Brezillon, Christian König, Felix Kuehling,
Leon Romanovsky, Steven Price, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, linux-kernel, amd-gfx,
dri-devel, linux-rdma, netdev
With or without this change the checked condition can be falsely true
if proc->tsk execs, but this is fine: binder_alloc_mmap_handler() checks
vma->vm_mm == alloc->mm.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
---
drivers/android/binder.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index dea701daabb0..b3b73303f84d 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -6015,7 +6015,7 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
{
struct binder_proc *proc = filp->private_data;
- if (proc->tsk != current->group_leader)
+ if (!same_thread_group(proc->tsk, current))
return -EINVAL;
binder_debug(BINDER_DEBUG_OPEN_CLOSE,
--
2.52.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v2 3/7] drm/amdgpu: don't abuse current->group_leader
2026-01-25 16:06 [PATCH v2 0/7] don't abuse task_struct.group_leader Oleg Nesterov
2026-01-25 16:07 ` [PATCH v2 1/7] android/binder: don't abuse current->group_leader Oleg Nesterov
2026-01-25 16:07 ` [PATCH v2 2/7] android/binder: use same_thread_group(proc->tsk, current) in binder_mmap() Oleg Nesterov
@ 2026-01-25 16:07 ` Oleg Nesterov
2026-01-25 16:07 ` [PATCH v2 4/7] drm/amd: kill the outdated "Only the pthreads threading model is supported" checks Oleg Nesterov
` (3 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Oleg Nesterov @ 2026-01-25 16:07 UTC (permalink / raw)
To: Andrew Morton
Cc: Alice Ryhl, Boris Brezillon, Christian König, Felix Kuehling,
Leon Romanovsky, Steven Price, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, linux-kernel, amd-gfx,
dri-devel, linux-rdma, netdev
Cleanup and preparation to simplify the next changes.
- Use current->tgid instead of current->group_leader->pid
- Use get_task_pid(current, PIDTYPE_TGID) instead of
get_task_pid(current->group_leader, PIDTYPE_PID)
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Felix Kuehling <felix.kuehling@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index b1c24c8fa686..df22b54ba346 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -1421,7 +1421,7 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info,
goto create_evict_fence_fail;
}
- info->pid = get_task_pid(current->group_leader, PIDTYPE_PID);
+ info->pid = get_task_pid(current, PIDTYPE_TGID);
INIT_DELAYED_WORK(&info->restore_userptr_work,
amdgpu_amdkfd_restore_userptr_worker);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index a67285118c37..a0f8ba382b9e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -2554,7 +2554,7 @@ void amdgpu_vm_set_task_info(struct amdgpu_vm *vm)
if (current->group_leader->mm != current->mm)
return;
- vm->task_info->tgid = current->group_leader->pid;
+ vm->task_info->tgid = current->tgid;
get_task_comm(vm->task_info->process_name, current->group_leader);
}
--
2.52.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v2 4/7] drm/amd: kill the outdated "Only the pthreads threading model is supported" checks
2026-01-25 16:06 [PATCH v2 0/7] don't abuse task_struct.group_leader Oleg Nesterov
` (2 preceding siblings ...)
2026-01-25 16:07 ` [PATCH v2 3/7] drm/amdgpu: don't abuse current->group_leader Oleg Nesterov
@ 2026-01-25 16:07 ` Oleg Nesterov
2026-01-25 16:07 ` [PATCH v2 5/7] drm/pan*: don't abuse current->group_leader Oleg Nesterov
` (2 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Oleg Nesterov @ 2026-01-25 16:07 UTC (permalink / raw)
To: Andrew Morton
Cc: Alice Ryhl, Boris Brezillon, Christian König, Felix Kuehling,
Leon Romanovsky, Steven Price, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, linux-kernel, amd-gfx,
dri-devel, linux-rdma, netdev
Nowaday task->group_leader->mm != task->mm is only possible if
a) task is not a group leader and b) task->group_leader->mm == NULL
because task->group_leader has already exited using sys_exit().
I don't think that drm/amd tries to detect/nack this case.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Acked-by: Felix Kuehling <felix.kuehling@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 3 ---
drivers/gpu/drm/amd/amdkfd/kfd_process.c | 10 ----------
2 files changed, 13 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index a0f8ba382b9e..e44f158a11f0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -2551,9 +2551,6 @@ void amdgpu_vm_set_task_info(struct amdgpu_vm *vm)
vm->task_info->task.pid = current->pid;
get_task_comm(vm->task_info->task.comm, current);
- if (current->group_leader->mm != current->mm)
- return;
-
vm->task_info->tgid = current->tgid;
get_task_comm(vm->task_info->process_name, current->group_leader);
}
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index a085faac9fe1..f8ef18a3aa71 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -833,12 +833,6 @@ struct kfd_process *kfd_create_process(struct task_struct *thread)
if (!(thread->mm && mmget_not_zero(thread->mm)))
return ERR_PTR(-EINVAL);
- /* Only the pthreads threading model is supported. */
- if (thread->group_leader->mm != thread->mm) {
- mmput(thread->mm);
- return ERR_PTR(-EINVAL);
- }
-
/* If the process just called exec(3), it is possible that the
* cleanup of the kfd_process (following the release of the mm
* of the old process image) is still in the cleanup work queue.
@@ -918,10 +912,6 @@ struct kfd_process *kfd_get_process(const struct task_struct *thread)
if (!thread->mm)
return ERR_PTR(-EINVAL);
- /* Only the pthreads threading model is supported. */
- if (thread->group_leader->mm != thread->mm)
- return ERR_PTR(-EINVAL);
-
process = find_process(thread, false);
if (!process)
return ERR_PTR(-EINVAL);
--
2.52.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v2 5/7] drm/pan*: don't abuse current->group_leader
2026-01-25 16:06 [PATCH v2 0/7] don't abuse task_struct.group_leader Oleg Nesterov
` (3 preceding siblings ...)
2026-01-25 16:07 ` [PATCH v2 4/7] drm/amd: kill the outdated "Only the pthreads threading model is supported" checks Oleg Nesterov
@ 2026-01-25 16:07 ` Oleg Nesterov
2026-01-25 16:07 ` [PATCH v2 6/7] RDMA/umem: " Oleg Nesterov
2026-01-25 16:08 ` [PATCH v2 7/7] netclassid: use thread_group_leader(p) in update_classid_task() Oleg Nesterov
6 siblings, 0 replies; 11+ messages in thread
From: Oleg Nesterov @ 2026-01-25 16:07 UTC (permalink / raw)
To: Andrew Morton
Cc: Alice Ryhl, Boris Brezillon, Christian König, Felix Kuehling,
Leon Romanovsky, Steven Price, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, linux-kernel, amd-gfx,
dri-devel, linux-rdma, netdev
Cleanup and preparation to simplify the next changes.
Use current->tgid instead of current->group_leader->pid.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Boris Brezillon <boris.brezillon@collabora.com>
Acked-by: Steven Price <steven.price@arm.com>
---
drivers/gpu/drm/panfrost/panfrost_gem.c | 2 +-
drivers/gpu/drm/panthor/panthor_gem.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.c b/drivers/gpu/drm/panfrost/panfrost_gem.c
index 8041b65c6609..1ff1f2c8b726 100644
--- a/drivers/gpu/drm/panfrost/panfrost_gem.c
+++ b/drivers/gpu/drm/panfrost/panfrost_gem.c
@@ -17,7 +17,7 @@
static void panfrost_gem_debugfs_bo_add(struct panfrost_device *pfdev,
struct panfrost_gem_object *bo)
{
- bo->debugfs.creator.tgid = current->group_leader->pid;
+ bo->debugfs.creator.tgid = current->tgid;
get_task_comm(bo->debugfs.creator.process_name, current->group_leader);
mutex_lock(&pfdev->debugfs.gems_lock);
diff --git a/drivers/gpu/drm/panthor/panthor_gem.c b/drivers/gpu/drm/panthor/panthor_gem.c
index fbde78db270a..29cc57efc4b9 100644
--- a/drivers/gpu/drm/panthor/panthor_gem.c
+++ b/drivers/gpu/drm/panthor/panthor_gem.c
@@ -27,7 +27,7 @@ static void panthor_gem_debugfs_bo_add(struct panthor_gem_object *bo)
struct panthor_device *ptdev = container_of(bo->base.base.dev,
struct panthor_device, base);
- bo->debugfs.creator.tgid = current->group_leader->pid;
+ bo->debugfs.creator.tgid = current->tgid;
get_task_comm(bo->debugfs.creator.process_name, current->group_leader);
mutex_lock(&ptdev->gems.lock);
--
2.52.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v2 6/7] RDMA/umem: don't abuse current->group_leader
2026-01-25 16:06 [PATCH v2 0/7] don't abuse task_struct.group_leader Oleg Nesterov
` (4 preceding siblings ...)
2026-01-25 16:07 ` [PATCH v2 5/7] drm/pan*: don't abuse current->group_leader Oleg Nesterov
@ 2026-01-25 16:07 ` Oleg Nesterov
2026-01-25 16:08 ` [PATCH v2 7/7] netclassid: use thread_group_leader(p) in update_classid_task() Oleg Nesterov
6 siblings, 0 replies; 11+ messages in thread
From: Oleg Nesterov @ 2026-01-25 16:07 UTC (permalink / raw)
To: Andrew Morton
Cc: Alice Ryhl, Boris Brezillon, Christian König, Felix Kuehling,
Leon Romanovsky, Steven Price, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, linux-kernel, amd-gfx,
dri-devel, linux-rdma, netdev
Cleanup and preparation to simplify the next changes.
Use current->tgid instead of current->group_leader->pid.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Leon Romanovsky <leon@kernel.org>
---
drivers/infiniband/core/umem_odp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/infiniband/core/umem_odp.c b/drivers/infiniband/core/umem_odp.c
index 572a91a62a7b..32267258a19c 100644
--- a/drivers/infiniband/core/umem_odp.c
+++ b/drivers/infiniband/core/umem_odp.c
@@ -149,7 +149,7 @@ struct ib_umem_odp *ib_umem_odp_alloc_implicit(struct ib_device *device,
umem->owning_mm = current->mm;
umem_odp->page_shift = PAGE_SHIFT;
- umem_odp->tgid = get_task_pid(current->group_leader, PIDTYPE_PID);
+ umem_odp->tgid = get_task_pid(current, PIDTYPE_TGID);
ib_init_umem_implicit_odp(umem_odp);
return umem_odp;
}
@@ -258,7 +258,7 @@ struct ib_umem_odp *ib_umem_odp_get(struct ib_device *device,
umem_odp->page_shift = HPAGE_SHIFT;
#endif
- umem_odp->tgid = get_task_pid(current->group_leader, PIDTYPE_PID);
+ umem_odp->tgid = get_task_pid(current, PIDTYPE_TGID);
ret = ib_init_umem_odp(umem_odp, ops);
if (ret)
goto err_put_pid;
--
2.52.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v2 7/7] netclassid: use thread_group_leader(p) in update_classid_task()
2026-01-25 16:06 [PATCH v2 0/7] don't abuse task_struct.group_leader Oleg Nesterov
` (5 preceding siblings ...)
2026-01-25 16:07 ` [PATCH v2 6/7] RDMA/umem: " Oleg Nesterov
@ 2026-01-25 16:08 ` Oleg Nesterov
2026-01-25 19:37 ` Jakub Kicinski
2026-01-26 20:50 ` Andrew Morton
6 siblings, 2 replies; 11+ messages in thread
From: Oleg Nesterov @ 2026-01-25 16:08 UTC (permalink / raw)
To: Andrew Morton
Cc: Alice Ryhl, Boris Brezillon, Christian König, Felix Kuehling,
Leon Romanovsky, Steven Price, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, linux-kernel, amd-gfx,
dri-devel, linux-rdma, netdev
Cleanup and preparation to simplify the next changes.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
---
net/core/netclassid_cgroup.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/core/netclassid_cgroup.c b/net/core/netclassid_cgroup.c
index dff66d8fb325..db9a5354f9de 100644
--- a/net/core/netclassid_cgroup.c
+++ b/net/core/netclassid_cgroup.c
@@ -93,7 +93,7 @@ static void update_classid_task(struct task_struct *p, u32 classid)
/* Only update the leader task, when many threads in this task,
* so it can avoid the useless traversal.
*/
- if (p != p->group_leader)
+ if (!thread_group_leader(p))
return;
do {
--
2.52.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v2 7/7] netclassid: use thread_group_leader(p) in update_classid_task()
2026-01-25 16:08 ` [PATCH v2 7/7] netclassid: use thread_group_leader(p) in update_classid_task() Oleg Nesterov
@ 2026-01-25 19:37 ` Jakub Kicinski
2026-01-26 20:50 ` Andrew Morton
1 sibling, 0 replies; 11+ messages in thread
From: Jakub Kicinski @ 2026-01-25 19:37 UTC (permalink / raw)
To: Oleg Nesterov
Cc: Andrew Morton, Alice Ryhl, Boris Brezillon, Christian König,
Felix Kuehling, Leon Romanovsky, Steven Price, David S. Miller,
Eric Dumazet, Paolo Abeni, Simon Horman, linux-kernel, amd-gfx,
dri-devel, linux-rdma, netdev
On Sun, 25 Jan 2026 17:08:00 +0100 Oleg Nesterov wrote:
> Cleanup and preparation to simplify the next changes.
Acked-by: Jakub Kicinski <kuba@kernel.org>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 7/7] netclassid: use thread_group_leader(p) in update_classid_task()
2026-01-25 16:08 ` [PATCH v2 7/7] netclassid: use thread_group_leader(p) in update_classid_task() Oleg Nesterov
2026-01-25 19:37 ` Jakub Kicinski
@ 2026-01-26 20:50 ` Andrew Morton
2026-01-26 20:53 ` Andrew Morton
1 sibling, 1 reply; 11+ messages in thread
From: Andrew Morton @ 2026-01-26 20:50 UTC (permalink / raw)
To: Oleg Nesterov
Cc: Alice Ryhl, Boris Brezillon, Christian König, Felix Kuehling,
Leon Romanovsky, Steven Price, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, linux-kernel, amd-gfx,
dri-devel, linux-rdma, netdev
On Sun, 25 Jan 2026 17:08:00 +0100 Oleg Nesterov <oleg@redhat.com> wrote:
> Cleanup and preparation to simplify the next changes.
>
"next changes". This is the final patch?
> --- a/net/core/netclassid_cgroup.c
> +++ b/net/core/netclassid_cgroup.c
> @@ -93,7 +93,7 @@ static void update_classid_task(struct task_struct *p, u32 classid)
> /* Only update the leader task, when many threads in this task,
> * so it can avoid the useless traversal.
> */
> - if (p != p->group_leader)
> + if (!thread_group_leader(p))
> return;
>
> do {
> --
> 2.52.0
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v2 7/7] netclassid: use thread_group_leader(p) in update_classid_task()
2026-01-26 20:50 ` Andrew Morton
@ 2026-01-26 20:53 ` Andrew Morton
0 siblings, 0 replies; 11+ messages in thread
From: Andrew Morton @ 2026-01-26 20:53 UTC (permalink / raw)
To: Oleg Nesterov, Alice Ryhl, Boris Brezillon, Christian König,
Felix Kuehling, Leon Romanovsky, Steven Price, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman,
linux-kernel, amd-gfx, dri-devel, linux-rdma, netdev
On Mon, 26 Jan 2026 12:50:48 -0800 Andrew Morton <akpm@linux-foundation.org> wrote:
> On Sun, 25 Jan 2026 17:08:00 +0100 Oleg Nesterov <oleg@redhat.com> wrote:
>
> > Cleanup and preparation to simplify the next changes.
> >
>
> "next changes". This is the final patch?
Ah, sorry, [0/n] explains. I'll make that "planned future changes".
^ permalink raw reply [flat|nested] 11+ messages in thread