diff options
| author | Carlos Llamas <cmllamas@google.com> | 2026-01-27 23:55:11 +0000 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-02-11 13:39:09 +0100 |
| commit | 46c93903e4c1920d1e82d630ef0c17f1091e5167 (patch) | |
| tree | 21f2c1a2beaa1e098ef7db46a3d30f45bcb25174 /drivers/android/binderfs.c | |
| parent | ebb6aa6928d5cafd1c12e335ddb2bf05de008631 (diff) | |
| download | linux-46c93903e4c1920d1e82d630ef0c17f1091e5167.tar.gz linux-46c93903e4c1920d1e82d630ef0c17f1091e5167.tar.bz2 linux-46c93903e4c1920d1e82d630ef0c17f1091e5167.zip | |
binderfs: fix ida_alloc_max() upper bound
commit ec4ddc90d201d09ef4e4bef8a2c6d9624525ad68 upstream.
The 'max' argument of ida_alloc_max() takes the maximum valid ID and not
the "count". Using an ID of BINDERFS_MAX_MINOR (1 << 20) for dev->minor
would exceed the limits of minor numbers (20-bits). Fix this off-by-one
error by subtracting 1 from the 'max'.
Cc: stable@vger.kernel.org
Fixes: 3ad20fe393b3 ("binder: implement binderfs")
Signed-off-by: Carlos Llamas <cmllamas@google.com>
Link: https://patch.msgid.link/20260127235545.2307876-2-cmllamas@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/android/binderfs.c')
| -rw-r--r-- | drivers/android/binderfs.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/android/binderfs.c b/drivers/android/binderfs.c index 81effec17b3d..2967170e09c8 100644 --- a/drivers/android/binderfs.c +++ b/drivers/android/binderfs.c @@ -130,8 +130,8 @@ static int binderfs_binder_device_create(struct inode *ref_inode, mutex_lock(&binderfs_minors_mutex); if (++info->device_count <= info->mount_opts.max) minor = ida_alloc_max(&binderfs_minors, - use_reserve ? BINDERFS_MAX_MINOR : - BINDERFS_MAX_MINOR_CAPPED, + use_reserve ? BINDERFS_MAX_MINOR - 1 : + BINDERFS_MAX_MINOR_CAPPED - 1, GFP_KERNEL); else minor = -ENOSPC; @@ -421,8 +421,8 @@ static int binderfs_binder_ctl_create(struct super_block *sb) /* Reserve a new minor number for the new device. */ mutex_lock(&binderfs_minors_mutex); minor = ida_alloc_max(&binderfs_minors, - use_reserve ? BINDERFS_MAX_MINOR : - BINDERFS_MAX_MINOR_CAPPED, + use_reserve ? BINDERFS_MAX_MINOR - 1 : + BINDERFS_MAX_MINOR_CAPPED - 1, GFP_KERNEL); mutex_unlock(&binderfs_minors_mutex); if (minor < 0) { |
