The patch titled devscontrol: avoid magic constants in drivers/base/map.c has been added to the -mm tree. Its filename is devscontrol-avoid-magic-constants-in-drivers-base-mapc.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: devscontrol: avoid magic constants in drivers/base/map.c From: Pavel Emelyanov <xemul@xxxxxxxxxx> Devices accessibility control group This controller allows to tune the devices accessibility by tasks, i.e. grant full access for /dev/null, /dev/zero etc, grant read-only access to IDE devices and completely hide SCSI disks. Tasks still can call mknod to create device files, regardless of whether the particular device is visible or accessible, but they may not be able to open it later. This one hides under CONFIG_CGROUP_DEVS option. To play with it - run a standard procedure: # mount -t container none /cont/devs -o devices # mkdir /cont/devs/0 # echo -n $$ > /cont/devs/0/tasks and tune device permissions. The only configuration file called devices.permissions accepts strings like '[cb] <major>:(<minor>|*) [r-][w-]' to provide read, write or read-write access to a particular device. Asterisk as the minor means "all devices with a given major". This will be described in Documentation/controllers/devices.txt file in more details. This patch: The number of chains in the kobj_map structure is hard-coded with a magic constant of 255. Make a named one instead. Signed-off-by: Pavel Emelyanov <xemul@xxxxxxxxxx> Cc: Paul Menage <menage@xxxxxxxxxx> Cc: Sukadev Bhattiprolu <sukadev@xxxxxxxxxx> Cc: Serge Hallyn <serue@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/base/map.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff -puN drivers/base/map.c~devscontrol-avoid-magic-constants-in-drivers-base-mapc drivers/base/map.c --- a/drivers/base/map.c~devscontrol-avoid-magic-constants-in-drivers-base-mapc +++ a/drivers/base/map.c @@ -16,6 +16,8 @@ #include <linux/kobject.h> #include <linux/kobj_map.h> +#define KOBJ_MAP_PROBES 255 + struct kobj_map { struct probe { struct probe *next; @@ -25,7 +27,7 @@ struct kobj_map { kobj_probe_t *get; int (*lock)(dev_t, void *); void *data; - } *probes[255]; + } *probes[KOBJ_MAP_PROBES]; struct mutex *lock; }; @@ -38,8 +40,8 @@ int kobj_map(struct kobj_map *domain, de unsigned i; struct probe *p; - if (n > 255) - n = 255; + if (n > KOBJ_MAP_PROBES) + n = KOBJ_MAP_PROBES; p = kmalloc(sizeof(struct probe) * n, GFP_KERNEL); @@ -56,7 +58,7 @@ int kobj_map(struct kobj_map *domain, de } mutex_lock(domain->lock); for (i = 0, p -= n; i < n; i++, p++, index++) { - struct probe **s = &domain->probes[index % 255]; + struct probe **s = &domain->probes[index % KOBJ_MAP_PROBES]; while (*s && (*s)->range < range) s = &(*s)->next; p->next = *s; @@ -73,13 +75,14 @@ void kobj_unmap(struct kobj_map *domain, unsigned i; struct probe *found = NULL; - if (n > 255) - n = 255; + if (n > KOBJ_MAP_PROBES) + n = KOBJ_MAP_PROBES; mutex_lock(domain->lock); for (i = 0; i < n; i++, index++) { struct probe **s; - for (s = &domain->probes[index % 255]; *s; s = &(*s)->next) { + for (s = &domain->probes[index % KOBJ_MAP_PROBES]; + *s; s = &(*s)->next) { struct probe *p = *s; if (p->dev == dev && p->range == range) { *s = p->next; @@ -101,7 +104,7 @@ struct kobject *kobj_lookup(struct kobj_ retry: mutex_lock(domain->lock); - for (p = domain->probes[MAJOR(dev) % 255]; p; p = p->next) { + for (p = domain->probes[MAJOR(dev) % KOBJ_MAP_PROBES]; p; p = p->next) { struct kobject *(*probe)(dev_t, int *, void *); struct module *owner; void *data; @@ -148,7 +151,7 @@ struct kobj_map *kobj_map_init(kobj_prob base->dev = 1; base->range = ~0; base->get = base_probe; - for (i = 0; i < 255; i++) + for (i = 0; i < KOBJ_MAP_PROBES; i++) p->probes[i] = base; p->lock = lock; return p; _ Patches currently in -mm which might be from xemul@xxxxxxxxxx are use-find_task_by_vpid-in-audit-code.patch ia64-fix-ptrace-inside-a-namespace.patch git-udf.patch cgroup-api-files-rename-read-write_uint-methods-to-read_write_u64.patch cgroup-api-files-add-res_counter_read_u64.patch cgroup-api-files-use-read_u64-in-memory-controller.patch cgroup-api-files-strip-all-trailing-whitespace-in-cgroup_write_u64.patch cgroup-api-files-update-cpusets-to-use-cgroup-structured-file-api.patch cgroup-api-files-update-cpusets-to-use-cgroup-structured-file-api-fix.patch cgroup-api-files-add-cgroup-map-data-type.patch cgroup-api-files-use-cgroup-map-for-memcontrol-stats-file.patch cgroup-api-files-drop-mem_cgroup_force_empty.patch cgroup-api-files-move-releasable-to-cgroup_debug-subsystem.patch cgroup-api-files-make-cgroup_debug-default-to-off.patch devscontrol-avoid-magic-constants-in-drivers-base-mapc.patch devscontrol-clean-up-get_gendisk-a-bit.patch devscontrol-add-a-mode-on-the-struct-probe.patch devscontrol-make-kobj_lookup-return-the-mappings-permissions.patch devscontrol-make-use-of-permissions-returned-by-kobj_lookup.patch devscontrol-extend-the-drivers-base-mapc-functionality.patch devscontrol-provide-functions-to-manipulate-char-device-mappings.patch devscontrol-provide-functions-to-manipulate-block-device-mappings.patch devscontrol-devices-accessibility-control-group-itself.patch remove-unused-variable-from-send_signal.patch turn-legacy_queue-macro-into-static-inline-function.patch consolidate-checking-for-ignored-legacy-signals.patch consolidate-checking-for-ignored-legacy-signals-simplify.patch signals-consolidate-checks-for-whether-or-not-to-ignore-a-signal.patch signals-clean-dequeue_signal-from-excess-checks-and-assignments.patch signals-consolidate-send_sigqueue-and-send_group_sigqueue.patch signals-cleanup-security_task_kill-usage-implementation.patch sysctl-merge-equal-proc_sys_read-and-proc_sys_write.patch sysctl-clean-from-unneeded-extern-and-forward-declarations.patch sysctl-add-the-permissions-callback-on-the-ctl_table_root.patch free_pidmap-turn-it-into-free_pidmapstruct-upid.patch use-find_task_by_vpid-in-taskstats.patch deprecate-find_task_by_pid.patch deprecate-find_task_by_pid-warning-fix.patch pidns-make-pid-level-and-pid_ns-level-unsigned.patch reiser4.patch put_pid-make-sure-we-dont-free-the-live-pid.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html