binderfs: fix ida_alloc_max() upper bound

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>

authored by Carlos Llamas and committed by Greg Kroah-Hartman ec4ddc90 d6ba7348

+4 -4
+4 -4
drivers/android/binderfs.c
··· 132 mutex_lock(&binderfs_minors_mutex); 133 if (++info->device_count <= info->mount_opts.max) 134 minor = ida_alloc_max(&binderfs_minors, 135 - use_reserve ? BINDERFS_MAX_MINOR : 136 - BINDERFS_MAX_MINOR_CAPPED, 137 GFP_KERNEL); 138 else 139 minor = -ENOSPC; ··· 408 /* Reserve a new minor number for the new device. */ 409 mutex_lock(&binderfs_minors_mutex); 410 minor = ida_alloc_max(&binderfs_minors, 411 - use_reserve ? BINDERFS_MAX_MINOR : 412 - BINDERFS_MAX_MINOR_CAPPED, 413 GFP_KERNEL); 414 mutex_unlock(&binderfs_minors_mutex); 415 if (minor < 0) {
··· 132 mutex_lock(&binderfs_minors_mutex); 133 if (++info->device_count <= info->mount_opts.max) 134 minor = ida_alloc_max(&binderfs_minors, 135 + use_reserve ? BINDERFS_MAX_MINOR - 1 : 136 + BINDERFS_MAX_MINOR_CAPPED - 1, 137 GFP_KERNEL); 138 else 139 minor = -ENOSPC; ··· 408 /* Reserve a new minor number for the new device. */ 409 mutex_lock(&binderfs_minors_mutex); 410 minor = ida_alloc_max(&binderfs_minors, 411 + use_reserve ? BINDERFS_MAX_MINOR - 1 : 412 + BINDERFS_MAX_MINOR_CAPPED - 1, 413 GFP_KERNEL); 414 mutex_unlock(&binderfs_minors_mutex); 415 if (minor < 0) {