static struct dentry *proc_pident_lookup(struct inode *dir, 
                                         struct dentry *dentry,
-                                        const struct pid_entry *ents,
-                                        unsigned int nents)
+                                        const struct pid_entry *p,
+                                        const struct pid_entry *end)
 {
        struct task_struct *task = get_proc_task(dir);
-       const struct pid_entry *p, *last;
        struct dentry *res = ERR_PTR(-ENOENT);
 
        if (!task)
         * Yes, it does not scale. And it should not. Don't add
         * new entries into /proc/<tgid>/ without very good reasons.
         */
-       last = &ents[nents];
-       for (p = ents; p < last; p++) {
+       for (; p < end; p++) {
                if (p->len != dentry->d_name.len)
                        continue;
                if (!memcmp(dentry->d_name.name, p->name, p->len)) {
 { \
        return proc_pident_lookup(dir, dentry, \
                                  LSM##_attr_dir_stuff, \
-                                 ARRAY_SIZE(LSM##_attr_dir_stuff)); \
+                                 LSM##_attr_dir_stuff + ARRAY_SIZE(LSM##_attr_dir_stuff)); \
 } \
 \
 static const struct inode_operations proc_##LSM##_attr_dir_inode_ops = { \
                                struct dentry *dentry, unsigned int flags)
 {
        return proc_pident_lookup(dir, dentry,
-                                 attr_dir_stuff, ARRAY_SIZE(attr_dir_stuff));
+                                 attr_dir_stuff,
+                                 attr_dir_stuff + ARRAY_SIZE(attr_dir_stuff));
 }
 
 static const struct inode_operations proc_attr_dir_inode_operations = {
 static struct dentry *proc_tgid_base_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
 {
        return proc_pident_lookup(dir, dentry,
-                                 tgid_base_stuff, ARRAY_SIZE(tgid_base_stuff));
+                                 tgid_base_stuff,
+                                 tgid_base_stuff + ARRAY_SIZE(tgid_base_stuff));
 }
 
 static const struct inode_operations proc_tgid_base_inode_operations = {
 static struct dentry *proc_tid_base_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
 {
        return proc_pident_lookup(dir, dentry,
-                                 tid_base_stuff, ARRAY_SIZE(tid_base_stuff));
+                                 tid_base_stuff,
+                                 tid_base_stuff + ARRAY_SIZE(tid_base_stuff));
 }
 
 static const struct file_operations proc_tid_base_operations = {