static int srm_env_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, srm_env_proc_show, PDE(inode)->data);
+       return single_open(file, srm_env_proc_show, PDE_DATA(inode));
 }
 
 static ssize_t srm_env_proc_write(struct file *file, const char __user *buffer,
                                  size_t count, loff_t *pos)
 {
        int res;
-       srm_env_t       *entry = PDE(file_inode(file))->data;
+       srm_env_t       *entry = PDE_DATA(file_inode(file));
        char            *buf = (char *) __get_free_page(GFP_USER);
        unsigned long   ret1, ret2;
 
 
 static ssize_t atags_read(struct file *file, char __user *buf,
                          size_t count, loff_t *ppos)
 {
-       struct buffer *b = PDE(file_inode(file))->data;
+       struct buffer *b = PDE_DATA(file_inode(file));
        return simple_read_from_buffer(buf, count, ppos, b->data, b->size);
 }
 
 
 
 static int cplbinfo_open(struct inode *inode, struct file *file)
 {
-       struct proc_dir_entry *pde = PDE(file_inode(file));
        char cplb_type;
-       unsigned int cpu;
+       unsigned int cpu = (unsigned long)PDE_DATA(file_inode(file));
        int ret;
        struct seq_file *m;
        struct cplbinfo_data *cdata;
 
-       cpu = (unsigned int)pde->data;
        cplb_type = cpu & CPLBINFO_DCPLB_FLAG ? 'D' : 'I';
        cpu &= ~CPLBINFO_DCPLB_FLAG;
 
 
 static ssize_t
 salinfo_event_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
 {
-       struct inode *inode = file_inode(file);
-       struct proc_dir_entry *entry = PDE(inode);
-       struct salinfo_data *data = entry->data;
+       struct salinfo_data *data = PDE_DATA(file_inode(file));
        char cmd[32];
        size_t size;
        int i, n, cpu = -1;
 static int
 salinfo_log_open(struct inode *inode, struct file *file)
 {
-       struct proc_dir_entry *entry = PDE(inode);
-       struct salinfo_data *data = entry->data;
+       struct salinfo_data *data = PDE_DATA(inode);
 
        if (!capable(CAP_SYS_ADMIN))
                return -EPERM;
 static int
 salinfo_log_release(struct inode *inode, struct file *file)
 {
-       struct proc_dir_entry *entry = PDE(inode);
-       struct salinfo_data *data = entry->data;
+       struct salinfo_data *data = PDE_DATA(inode);
 
        if (data->state == STATE_NO_DATA) {
                vfree(data->log_buffer);
 static ssize_t
 salinfo_log_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
 {
-       struct inode *inode = file_inode(file);
-       struct proc_dir_entry *entry = PDE(inode);
-       struct salinfo_data *data = entry->data;
+       struct salinfo_data *data = PDE_DATA(file_inode(file));
        u8 *buf;
        u64 bufsize;
 
 static ssize_t
 salinfo_log_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos)
 {
-       struct inode *inode = file_inode(file);
-       struct proc_dir_entry *entry = PDE(inode);
-       struct salinfo_data *data = entry->data;
+       struct salinfo_data *data = PDE_DATA(file_inode(file));
        char cmd[32];
        size_t size;
        u32 offset;
 
 
 static int pvc_line_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, pvc_line_proc_show, PDE(inode)->data);
+       return single_open(file, pvc_line_proc_show, PDE_DATA(inode));
 }
 
 static ssize_t pvc_line_proc_write(struct file *file, const char __user *buf,
                                   size_t count, loff_t *pos)
 {
-       int lineno = *(int *)PDE(file_inode(file))->data;
+       int lineno = *(int *)PDE_DATA(file_inode(file));
        char kbuf[PVC_LINELEN];
        size_t len;
 
 
 static loff_t page_map_seek( struct file *file, loff_t off, int whence)
 {
        loff_t new;
-       struct proc_dir_entry *dp = PDE(file_inode(file));
-
        switch(whence) {
        case 0:
                new = off;
                new = file->f_pos + off;
                break;
        case 2:
-               new = dp->size + off;
+               new = PAGE_SIZE + off;
                break;
        default:
                return -EINVAL;
        }
-       if ( new < 0 || new > dp->size )
+       if ( new < 0 || new > PAGE_SIZE )
                return -EINVAL;
        return (file->f_pos = new);
 }
 static ssize_t page_map_read( struct file *file, char __user *buf, size_t nbytes,
                              loff_t *ppos)
 {
-       struct proc_dir_entry *dp = PDE(file_inode(file));
-       return simple_read_from_buffer(buf, nbytes, ppos, dp->data, dp->size);
+       return simple_read_from_buffer(buf, nbytes, ppos,
+                       PDE_DATA(file_inode(file)), PAGE_SIZE);
 }
 
 static int page_map_mmap( struct file *file, struct vm_area_struct *vma )
 {
-       struct proc_dir_entry *dp = PDE(file_inode(file));
-
-       if ((vma->vm_end - vma->vm_start) > dp->size)
+       if ((vma->vm_end - vma->vm_start) > PAGE_SIZE)
                return -EINVAL;
 
-       remap_pfn_range(vma, vma->vm_start, __pa(dp->data) >> PAGE_SHIFT,
-                                               dp->size, vma->vm_page_prot);
+       remap_pfn_range(vma, vma->vm_start,
+                       __pa(PDE_DATA(file_inode(file))) >> PAGE_SHIFT,
+                       PAGE_SIZE, vma->vm_page_prot);
        return 0;
 }
 
 
 static ssize_t scanlog_read(struct file *file, char __user *buf,
                            size_t count, loff_t *ppos)
 {
-       struct proc_dir_entry *dp = PDE(file_inode(file));
-       unsigned int *data = (unsigned int *)dp->data;
+       unsigned int *data = PDE_DATA(file_inode(file));
        int status;
        unsigned long len, off;
        unsigned int wait_time;
 
 static int scanlog_open(struct inode * inode, struct file * file)
 {
-       struct proc_dir_entry *dp = PDE(inode);
-       unsigned int *data = (unsigned int *)dp->data;
+       unsigned int *data = PDE_DATA(file_inode(file));
 
        if (data[0] != 0) {
                /* This imperfect test stops a second copy of the
 
 static int scanlog_release(struct inode * inode, struct file * file)
 {
-       struct proc_dir_entry *dp = PDE(inode);
-       unsigned int *data = (unsigned int *)dp->data;
+       unsigned int *data = PDE_DATA(file_inode(file));
 
        data[0] = 0;
 
 
 static ssize_t alignment_proc_write(struct file *file,
                const char __user *buffer, size_t count, loff_t *pos)
 {
-       int *data = PDE(file_inode(file))->data;
+       int *data = PDE_DATA(file_inode(file));
        char mode;
 
        if (count > 0) {
 
 
 static int sparc_io_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, sparc_io_proc_show, PDE(inode)->data);
+       return single_open(file, sparc_io_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations sparc_io_proc_fops = {
 
 static int hardwall_proc_open(struct inode *inode,
                              struct file *file)
 {
-       return single_open(file, hardwall_proc_show, PDE(inode)->data);
+       return single_open(file, hardwall_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations hardwall_proc_fops = {
 
 static ssize_t proc_read_simdisk(struct file *file, char __user *buf,
                        size_t size, loff_t *ppos)
 {
-       struct simdisk *dev = PDE(file_inode(file))->data;
+       struct simdisk *dev = PDE_DATA(file_inode(file));
        char *s = dev->filename;
        if (s) {
                ssize_t n = simple_read_from_buffer(buf, size, ppos,
                        size_t size, loff_t *ppos)
 {
        char *tmp = kmalloc(count + 1, GFP_KERNEL);
-       struct simdisk *dev = PDE(file_inode(file))->data;
+       struct simdisk *dev = PDE_DATA(file_inode(file));
        int err;
 
        if (tmp == NULL)
 
 
 static int acpi_ac_open_fs(struct inode *inode, struct file *file)
 {
-       return single_open(file, acpi_ac_seq_show, PDE(inode)->data);
+       return single_open(file, acpi_ac_seq_show, PDE_DATA(inode));
 }
 
 static int acpi_ac_add_fs(struct acpi_device *device)
 
 } \
 static int acpi_battery_##_name##_open_fs(struct inode *inode, struct file *file) \
 { \
-       return single_open(file, acpi_battery_read_##_name, PDE(inode)->data); \
+       return single_open(file, acpi_battery_read_##_name, PDE_DATA(inode)); \
 }
 
 DECLARE_FILE_FUNCTIONS(info);
 
 
 static int acpi_button_state_open_fs(struct inode *inode, struct file *file)
 {
-       return single_open(file, acpi_button_state_seq_show, PDE(inode)->data);
+       return single_open(file, acpi_button_state_seq_show, PDE_DATA(inode));
 }
 
 static const struct file_operations acpi_button_state_fops = {
 
 
 static int acpi_system_alarm_open_fs(struct inode *inode, struct file *file)
 {
-       return single_open(file, acpi_system_alarm_seq_show, PDE(inode)->data);
+       return single_open(file, acpi_system_alarm_seq_show, PDE_DATA(inode));
 }
 
 static int get_date_field(char **p, u32 * value)
 acpi_system_wakeup_device_open_fs(struct inode *inode, struct file *file)
 {
        return single_open(file, acpi_system_wakeup_device_seq_show,
-                          PDE(inode)->data);
+                          PDE_DATA(inode));
 }
 
 static const struct file_operations acpi_system_wakeup_device_fops = {
 
 
 static int acpi_battery_info_open_fs(struct inode *inode, struct file *file)
 {
-       return single_open(file, acpi_battery_read_info, PDE(inode)->data);
+       return single_open(file, acpi_battery_read_info, PDE_DATA(inode));
 }
 
 static int acpi_battery_read_state(struct seq_file *seq, void *offset)
 
 static int acpi_battery_state_open_fs(struct inode *inode, struct file *file)
 {
-       return single_open(file, acpi_battery_read_state, PDE(inode)->data);
+       return single_open(file, acpi_battery_read_state, PDE_DATA(inode));
 }
 
 static int acpi_battery_read_alarm(struct seq_file *seq, void *offset)
 
 static int acpi_battery_alarm_open_fs(struct inode *inode, struct file *file)
 {
-       return single_open(file, acpi_battery_read_alarm, PDE(inode)->data);
+       return single_open(file, acpi_battery_read_alarm, PDE_DATA(inode));
 }
 
 static const struct file_operations acpi_battery_info_fops = {
 
 static int acpi_ac_state_open_fs(struct inode *inode, struct file *file)
 {
-       return single_open(file, acpi_ac_read_state, PDE(inode)->data);
+       return single_open(file, acpi_ac_read_state, PDE_DATA(inode));
 }
 
 static const struct file_operations acpi_ac_state_fops = {
 
 
 static int dac960_initial_status_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, dac960_initial_status_proc_show, PDE(inode)->data);
+       return single_open(file, dac960_initial_status_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations dac960_initial_status_proc_fops = {
 
 static int dac960_current_status_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, dac960_current_status_proc_show, PDE(inode)->data);
+       return single_open(file, dac960_current_status_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations dac960_current_status_proc_fops = {
 
 static int dac960_user_command_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, dac960_user_command_proc_show, PDE(inode)->data);
+       return single_open(file, dac960_user_command_proc_show, PDE_DATA(inode));
 }
 
 static ssize_t dac960_user_command_proc_write(struct file *file,
                                       const char __user *Buffer,
                                       size_t Count, loff_t *pos)
 {
-  DAC960_Controller_T *Controller = (DAC960_Controller_T *) PDE(file_inode(file))->data;
+  DAC960_Controller_T *Controller = PDE_DATA(file_inode(file));
   unsigned char CommandBuffer[80];
   int Length;
   if (Count > sizeof(CommandBuffer)-1) return -EINVAL;
 
        struct seq_file *seq = file->private_data;
 
        if (!ret)
-               seq->private = PDE(inode)->data;
+               seq->private = PDE_DATA(inode);
 
        return ret;
 }
 
 
 static int ida_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ida_proc_show, PDE(inode)->data);
+       return single_open(file, ida_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations ida_proc_fops = {
 
 static int drbd_proc_open(struct inode *inode, struct file *file)
 {
        if (try_module_get(THIS_MODULE))
-               return single_open(file, drbd_seq_show, PDE(inode)->data);
+               return single_open(file, drbd_seq_show, PDE_DATA(inode));
        return -ENODEV;
 }
 
 
 
 static int pkt_seq_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, pkt_seq_show, PDE(inode)->data);
+       return single_open(file, pkt_seq_show, PDE_DATA(inode));
 }
 
 static const struct file_operations pkt_proc_fops = {
 
 
 static int ps3vram_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ps3vram_proc_show, PDE(inode)->data);
+       return single_open(file, ps3vram_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations ps3vram_proc_fops = {
 
 
 static int smi_ipmb_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, smi_ipmb_proc_show, PDE(inode)->data);
+       return single_open(file, smi_ipmb_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations smi_ipmb_proc_ops = {
 
 static int smi_version_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, smi_version_proc_show, PDE(inode)->data);
+       return single_open(file, smi_version_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations smi_version_proc_ops = {
 
 static int smi_stats_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, smi_stats_proc_show, PDE(inode)->data);
+       return single_open(file, smi_stats_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations smi_stats_proc_ops = {
 
 
 static int smi_type_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, smi_type_proc_show, PDE(inode)->data);
+       return single_open(file, smi_type_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations smi_type_proc_ops = {
 
 static int smi_si_stats_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, smi_si_stats_proc_show, PDE(inode)->data);
+       return single_open(file, smi_si_stats_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations smi_si_stats_proc_ops = {
 
 static int smi_params_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, smi_params_proc_show, PDE(inode)->data);
+       return single_open(file, smi_params_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations smi_params_proc_ops = {
 
 
 static int drm_proc_open(struct inode *inode, struct file *file)
 {
-       struct drm_info_node* node = PDE(inode)->data;
+       struct drm_info_node* node = PDE_DATA(inode);
 
        return single_open(file, node->info_ent->show, node);
 }
 
 
 static int idecd_capacity_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, idecd_capacity_proc_show, PDE(inode)->data);
+       return single_open(file, idecd_capacity_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations idecd_capacity_proc_fops = {
 
 
 static int idedisk_cache_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, idedisk_cache_proc_show, PDE(inode)->data);
+       return single_open(file, idedisk_cache_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations idedisk_cache_proc_fops = {
 
 static int idedisk_capacity_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, idedisk_capacity_proc_show, PDE(inode)->data);
+       return single_open(file, idedisk_capacity_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations idedisk_capacity_proc_fops = {
 
 static int idedisk_sv_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, idedisk_sv_proc_show, PDE(inode)->data);
+       return single_open(file, idedisk_sv_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations idedisk_sv_proc_fops = {
 
 static int idedisk_st_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, idedisk_st_proc_show, PDE(inode)->data);
+       return single_open(file, idedisk_st_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations idedisk_st_proc_fops = {
 
 
 static int idefloppy_capacity_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, idefloppy_capacity_proc_show, PDE(inode)->data);
+       return single_open(file, idefloppy_capacity_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations idefloppy_capacity_proc_fops = {
 
 
 static int ide_imodel_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ide_imodel_proc_show, PDE(inode)->data);
+       return single_open(file, ide_imodel_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations ide_imodel_proc_fops = {
 
 static int ide_mate_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ide_mate_proc_show, PDE(inode)->data);
+       return single_open(file, ide_mate_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations ide_mate_proc_fops = {
 
 static int ide_channel_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ide_channel_proc_show, PDE(inode)->data);
+       return single_open(file, ide_channel_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations ide_channel_proc_fops = {
 
 static int ide_identify_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ide_identify_proc_show, PDE(inode)->data);
+       return single_open(file, ide_identify_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations ide_identify_proc_fops = {
 
 static int ide_settings_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ide_settings_proc_show, PDE(inode)->data);
+       return single_open(file, ide_settings_proc_show, PDE_DATA(inode));
 }
 
 #define MAX_LEN        30
 static ssize_t ide_settings_proc_write(struct file *file, const char __user *buffer,
                                       size_t count, loff_t *pos)
 {
-       ide_drive_t     *drive = (ide_drive_t *) PDE(file_inode(file))->data;
+       ide_drive_t     *drive = PDE_DATA(file_inode(file));
        char            name[MAX_LEN + 1];
        int             for_real = 0, mul_factor, div_factor;
        unsigned long   n;
 
 static int ide_geometry_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ide_geometry_proc_show, PDE(inode)->data);
+       return single_open(file, ide_geometry_proc_show, PDE_DATA(inode));
 }
 
 const struct file_operations ide_geometry_proc_fops = {
 
 static int ide_dmodel_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ide_dmodel_proc_show, PDE(inode)->data);
+       return single_open(file, ide_dmodel_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations ide_dmodel_proc_fops = {
 
 static int ide_driver_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ide_driver_proc_show, PDE(inode)->data);
+       return single_open(file, ide_driver_proc_show, PDE_DATA(inode));
 }
 
 static int ide_replace_subdriver(ide_drive_t *drive, const char *driver)
 static ssize_t ide_driver_proc_write(struct file *file, const char __user *buffer,
                                     size_t count, loff_t *pos)
 {
-       ide_drive_t     *drive = (ide_drive_t *) PDE(file_inode(file))->data;
+       ide_drive_t     *drive = PDE_DATA(file_inode(file));
        char name[32];
 
        if (!capable(CAP_SYS_ADMIN))
 
 static int ide_media_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, ide_media_proc_show, PDE(inode)->data);
+       return single_open(file, ide_media_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations ide_media_proc_fops = {
 
 
 static int idetape_name_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, idetape_name_proc_show, PDE(inode)->data);
+       return single_open(file, idetape_name_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations idetape_name_proc_fops = {
 
 
 static int gigaset_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, gigaset_proc_show, PDE(inode)->data);
+       return single_open(file, gigaset_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations gigaset_proc_fops = {
 
 
 static int b1ctl_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, b1ctl_proc_show, PDE(inode)->data);
+       return single_open(file, b1ctl_proc_show, PDE_DATA(inode));
 }
 
 const struct file_operations b1ctl_proc_fops = {
 
 
 static int b1dmactl_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, b1dmactl_proc_show, PDE(inode)->data);
+       return single_open(file, b1dmactl_proc_show, PDE_DATA(inode));
 }
 
 const struct file_operations b1dmactl_proc_fops = {
 
 
 static int c4_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, c4_proc_show, PDE(inode)->data);
+       return single_open(file, c4_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations c4_proc_fops = {
 
 static ssize_t grp_opt_proc_write(struct file *file, const char __user *buffer,
                                  size_t count, loff_t *pos)
 {
-       diva_os_xdi_adapter_t *a = PDE(file_inode(file))->data;
+       diva_os_xdi_adapter_t *a = PDE_DATA(file_inode(file));
        PISDN_ADAPTER IoAdapter = IoAdapters[a->controller - 1];
 
        if ((count == 1) || (count == 2)) {
 static ssize_t d_l1_down_proc_write(struct file *file, const char __user *buffer,
                                    size_t count, loff_t *pos)
 {
-       diva_os_xdi_adapter_t *a = PDE(file_inode(file))->data;
+       diva_os_xdi_adapter_t *a = PDE_DATA(file_inode(file));
        PISDN_ADAPTER IoAdapter = IoAdapters[a->controller - 1];
 
        if ((count == 1) || (count == 2)) {
 
 static int d_l1_down_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, d_l1_down_proc_show, PDE(inode)->data);
+       return single_open(file, d_l1_down_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations d_l1_down_proc_fops = {
 
 static int grp_opt_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, grp_opt_proc_show, PDE(inode)->data);
+       return single_open(file, grp_opt_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations grp_opt_proc_fops = {
 static ssize_t info_proc_write(struct file *file, const char __user *buffer,
                               size_t count, loff_t *pos)
 {
-       diva_os_xdi_adapter_t *a = PDE(file_inode(file))->data;
+       diva_os_xdi_adapter_t *a = PDE_DATA(file_inode(file));
        PISDN_ADAPTER IoAdapter = IoAdapters[a->controller - 1];
        char c[4];
 
 
 static int info_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, info_proc_show, PDE(inode)->data);
+       return single_open(file, info_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations info_proc_fops = {
 
 
 static int hycapi_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, hycapi_proc_show, PDE(inode)->data);
+       return single_open(file, hycapi_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations hycapi_proc_fops = {
 
 
        /* now search the addressed card */
        mutex_lock(&hysdn_conf_mutex);
-       card = PDE(ino)->data;
+       card = PDE_DATA(ino);
        if (card->debug_flags & (LOG_PROC_OPEN | LOG_PROC_ALL))
                hysdn_addlog(card, "config open for uid=%d gid=%d mode=0x%x",
                             filep->f_cred->fsuid, filep->f_cred->fsgid,
        int retval = 0;
 
        mutex_lock(&hysdn_conf_mutex);
-       card = PDE(ino)->data;
+       card = PDE_DATA(ino);
        if (card->debug_flags & (LOG_PROC_OPEN | LOG_PROC_ALL))
                hysdn_addlog(card, "config close for uid=%d gid=%d mode=0x%x",
                             filep->f_cred->fsuid, filep->f_cred->fsgid,
 
 {
        struct log_data *inf;
        int len;
-       hysdn_card *card = PDE(file_inode(file))->data;
+       hysdn_card *card = PDE_DATA(file_inode(file));
 
        if (!*((struct log_data **) file->private_data)) {
                struct procdata *pd = card->proclog;
 static int
 hysdn_log_open(struct inode *ino, struct file *filep)
 {
-       hysdn_card *card = PDE(ino)->data;
+       hysdn_card *card = PDE_DATA(ino);
 
        mutex_lock(&hysdn_log_mutex);
        if ((filep->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_WRITE) {
                        pd = (struct procdata *) inf->proc_ctrl;        /* still entries there */
                else {
                        /* no info available -> search card */
-                       card = PDE(file_inode(filep))->data;
+                       card = PDE_DATA(file_inode(filep));
                        pd = card->proclog;     /* pointer to procfs log */
                }
                if (pd)
 hysdn_log_poll(struct file *file, poll_table *wait)
 {
        unsigned int mask = 0;
-       hysdn_card *card = PDE(file_inode(file))->data;
+       hysdn_card *card = PDE_DATA(file_inode(file));
        struct procdata *pd = card->proclog;
 
        if ((file->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_WRITE)
 
 
 static int pmu_battery_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, pmu_battery_proc_show, PDE(inode)->data);
+       return single_open(file, pmu_battery_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations pmu_battery_proc_fops = {
 
 
 static int zoran_open(struct inode *inode, struct file *file)
 {
-       struct zoran *data = PDE(inode)->data;
+       struct zoran *data = PDE_DATA(inode);
        return single_open(file, zoran_show, data);
 }
 
 static ssize_t zoran_write(struct file *file, const char __user *buffer,
                        size_t count, loff_t *ppos)
 {
-       struct zoran *zr = PDE(file_inode(file))->data;
+       struct zoran *zr = PDE_DATA(file_inode(file));
        char *string, *sp;
        char *line, *ldelim, *varname, *svar, *tdelim;
 
 
 
 static int mpt_summary_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, mpt_summary_proc_show, PDE(inode)->data);
+       return single_open(file, mpt_summary_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations mpt_summary_proc_fops = {
 
 static int mpt_iocinfo_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, mpt_iocinfo_proc_show, PDE(inode)->data);
+       return single_open(file, mpt_iocinfo_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations mpt_iocinfo_proc_fops = {
 
 
 static int i2o_seq_open_hrt(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_hrt, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_hrt, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_lct(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_lct, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_lct, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_status(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_status, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_status, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_hw(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_hw, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_hw, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_ddm_table(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_ddm_table, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_ddm_table, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_driver_store(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_driver_store, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_driver_store, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_drivers_stored(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_drivers_stored, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_drivers_stored, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_groups(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_groups, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_groups, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_phys_device(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_phys_device, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_phys_device, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_claimed(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_claimed, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_claimed, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_users(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_users, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_users, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_priv_msgs(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_priv_msgs, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_priv_msgs, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_authorized_users(struct inode *inode, struct file *file)
 {
        return single_open(file, i2o_seq_show_authorized_users,
-                          PDE(inode)->data);
+                          PDE_DATA(inode));
 };
 
 static int i2o_seq_open_dev_identity(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_dev_identity, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_dev_identity, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_ddm_identity(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_ddm_identity, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_ddm_identity, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_uinfo(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_uinfo, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_uinfo, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_sgl_limits(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_sgl_limits, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_sgl_limits, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_sensors(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_sensors, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_sensors, PDE_DATA(inode));
 };
 
 static int i2o_seq_open_dev_name(struct inode *inode, struct file *file)
 {
-       return single_open(file, i2o_seq_show_dev_name, PDE(inode)->data);
+       return single_open(file, i2o_seq_show_dev_name, PDE_DATA(inode));
 };
 
 static const struct file_operations i2o_seq_fops_lct = {
 
 static int bond_info_open(struct inode *inode, struct file *file)
 {
        struct seq_file *seq;
-       struct proc_dir_entry *proc;
        int res;
 
        res = seq_open(file, &bond_info_seq_ops);
        if (!res) {
                /* recover the pointer buried in proc_dir_entry data */
                seq = file->private_data;
-               proc = PDE(inode);
-               seq->private = proc->data;
+               seq->private = PDE_DATA(inode);
        }
 
        return res;
 
 
 static int vlsi_seq_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, vlsi_seq_show, PDE(inode)->data);
+       return single_open(file, vlsi_seq_show, PDE_DATA(inode));
 }
 
 static const struct file_operations vlsi_proc_fops = {
 
 static int proc_status_open(struct inode *inode, struct file *file)
 {
        struct proc_data *data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *apriv = dev->ml_priv;
        CapabilityRid cap_rid;
        StatusRid status_rid;
                                u16 rid )
 {
        struct proc_data *data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *apriv = dev->ml_priv;
        StatsRid stats;
        int i, j;
 static void proc_config_on_close(struct inode *inode, struct file *file)
 {
        struct proc_data *data = file->private_data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *ai = dev->ml_priv;
        char *line;
 
 static int proc_config_open(struct inode *inode, struct file *file)
 {
        struct proc_data *data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *ai = dev->ml_priv;
        int i;
        __le16 mode;
 static void proc_SSID_on_close(struct inode *inode, struct file *file)
 {
        struct proc_data *data = file->private_data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *ai = dev->ml_priv;
        SsidRid SSID_rid;
        int i;
 
 static void proc_APList_on_close( struct inode *inode, struct file *file ) {
        struct proc_data *data = file->private_data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *ai = dev->ml_priv;
        APListRid APList_rid;
        int i;
 
 static void proc_wepkey_on_close( struct inode *inode, struct file *file ) {
        struct proc_data *data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *ai = dev->ml_priv;
        int i, rc;
        char key[16];
 static int proc_wepkey_open( struct inode *inode, struct file *file )
 {
        struct proc_data *data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *ai = dev->ml_priv;
        char *ptr;
        WepKeyRid wkr;
 static int proc_SSID_open(struct inode *inode, struct file *file)
 {
        struct proc_data *data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *ai = dev->ml_priv;
        int i;
        char *ptr;
 
 static int proc_APList_open( struct inode *inode, struct file *file ) {
        struct proc_data *data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *ai = dev->ml_priv;
        int i;
        char *ptr;
 
 static int proc_BSSList_open( struct inode *inode, struct file *file ) {
        struct proc_data *data;
-       struct proc_dir_entry *dp = PDE(inode);
-       struct net_device *dev = dp->data;
+       struct net_device *dev = PDE_DATA(inode);
        struct airo_info *ai = dev->ml_priv;
        char *ptr;
        BSSListRid BSSList_rid;
 
                nr = nr * 10 + c;
                p++;
        } while (--len);
-       *(int *)PDE(file_inode(file))->data = nr;
+       *(int *)PDE_DATA(file_inode(file)) = nr;
        return count;
 }
 
 
 
 static int led_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, led_proc_show, PDE(inode)->data);
+       return single_open(file, led_proc_show, PDE_DATA(inode));
 }
 
 
 static ssize_t led_proc_write(struct file *file, const char *buf,
        size_t count, loff_t *pos)
 {
-       void *data = PDE(file_inode(file))->data;
+       void *data = PDE_DATA(file_inode(file));
        char *cur, lbuf[32];
        int d;
 
 
 static ssize_t
 proc_bus_pci_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos)
 {
-       const struct inode *ino = file_inode(file);
-       const struct proc_dir_entry *dp = PDE(ino);
-       struct pci_dev *dev = dp->data;
+       struct pci_dev *dev = PDE_DATA(file_inode(file));
        unsigned int pos = *ppos;
        unsigned int cnt, size;
 
         */
 
        if (capable(CAP_SYS_ADMIN))
-               size = dp->size;
+               size = dev->cfg_size;
        else if (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
                size = 128;
        else
 proc_bus_pci_write(struct file *file, const char __user *buf, size_t nbytes, loff_t *ppos)
 {
        struct inode *ino = file_inode(file);
-       const struct proc_dir_entry *dp = PDE(ino);
-       struct pci_dev *dev = dp->data;
+       struct pci_dev *dev = PDE_DATA(ino);
        int pos = *ppos;
-       int size = dp->size;
+       int size = dev->cfg_size;
        int cnt;
 
        if (pos >= size)
        pci_config_pm_runtime_put(dev);
 
        *ppos = pos;
-       i_size_write(ino, dp->size);
+       i_size_write(ino, dev->cfg_size);
        return nbytes;
 }
 
 static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd,
                               unsigned long arg)
 {
-       const struct proc_dir_entry *dp = PDE(file_inode(file));
-       struct pci_dev *dev = dp->data;
+       struct pci_dev *dev = PDE_DATA(file_inode(file));
 #ifdef HAVE_PCI_MMAP
        struct pci_filp_private *fpriv = file->private_data;
 #endif /* HAVE_PCI_MMAP */
 #ifdef HAVE_PCI_MMAP
 static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma)
 {
-       struct inode *inode = file_inode(file);
-       const struct proc_dir_entry *dp = PDE(inode);
-       struct pci_dev *dev = dp->data;
+       struct pci_dev *dev = PDE_DATA(file_inode(file));
        struct pci_filp_private *fpriv = file->private_data;
        int i, ret;
 
 
 
 static int dispatch_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, dispatch_proc_show, PDE(inode)->data);
+       return single_open(file, dispatch_proc_show, PDE_DATA(inode));
 }
 
 static ssize_t dispatch_proc_write(struct file *file,
                        const char __user *userbuf,
                        size_t count, loff_t *pos)
 {
-       struct ibm_struct *ibm = PDE(file_inode(file))->data;
+       struct ibm_struct *ibm = PDE_DATA(file_inode(file));
        char *kernbuf;
        int ret;
 
 
 
 static int lcd_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, lcd_proc_show, PDE(inode)->data);
+       return single_open(file, lcd_proc_show, PDE_DATA(inode));
 }
 
 static int set_lcd_brightness(struct toshiba_acpi_dev *dev, int value)
 static ssize_t lcd_proc_write(struct file *file, const char __user *buf,
                              size_t count, loff_t *pos)
 {
-       struct toshiba_acpi_dev *dev = PDE(file_inode(file))->data;
+       struct toshiba_acpi_dev *dev = PDE_DATA(file_inode(file));
        char cmd[42];
        size_t len;
        int value;
 
 static int video_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, video_proc_show, PDE(inode)->data);
+       return single_open(file, video_proc_show, PDE_DATA(inode));
 }
 
 static ssize_t video_proc_write(struct file *file, const char __user *buf,
                                size_t count, loff_t *pos)
 {
-       struct toshiba_acpi_dev *dev = PDE(file_inode(file))->data;
+       struct toshiba_acpi_dev *dev = PDE_DATA(file_inode(file));
        char *cmd, *buffer;
        int ret;
        int value;
 
 static int fan_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, fan_proc_show, PDE(inode)->data);
+       return single_open(file, fan_proc_show, PDE_DATA(inode));
 }
 
 static ssize_t fan_proc_write(struct file *file, const char __user *buf,
                              size_t count, loff_t *pos)
 {
-       struct toshiba_acpi_dev *dev = PDE(file_inode(file))->data;
+       struct toshiba_acpi_dev *dev = PDE_DATA(file_inode(file));
        char cmd[42];
        size_t len;
        int value;
 
 static int keys_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, keys_proc_show, PDE(inode)->data);
+       return single_open(file, keys_proc_show, PDE_DATA(inode));
 }
 
 static ssize_t keys_proc_write(struct file *file, const char __user *buf,
                               size_t count, loff_t *pos)
 {
-       struct toshiba_acpi_dev *dev = PDE(file_inode(file))->data;
+       struct toshiba_acpi_dev *dev = PDE_DATA(file_inode(file));
        char cmd[42];
        size_t len;
        int value;
 
 static int version_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, version_proc_show, PDE(inode)->data);
+       return single_open(file, version_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations version_proc_fops = {
 
 static ssize_t isapnp_proc_bus_read(struct file *file, char __user * buf,
                                    size_t nbytes, loff_t * ppos)
 {
-       struct inode *ino = file_inode(file);
-       struct proc_dir_entry *dp = PDE(ino);
-       struct pnp_dev *dev = dp->data;
+       struct pnp_dev *dev = PDE_DATA(file_inode(file));
        int pos = *ppos;
        int cnt, size = 256;
 
 
 
 static int pnpbios_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, pnpbios_proc_show, PDE(inode)->data);
+       return single_open(file, pnpbios_proc_show, PDE_DATA(inode));
 }
 
 static ssize_t pnpbios_proc_write(struct file *file, const char __user *buf,
                                  size_t count, loff_t *pos)
 {
-       void *data = PDE(file_inode(file))->data;
+       void *data = PDE_DATA(file_inode(file));
        struct pnp_bios_node *node;
        int boot = (long)data >> 8;
        u8 nodenum = (long)data;
 
 static int rtc_proc_open(struct inode *inode, struct file *file)
 {
        int ret;
-       struct rtc_device *rtc = PDE(inode)->data;
+       struct rtc_device *rtc = PDE_DATA(inode);
 
        if (!try_module_get(THIS_MODULE))
                return -ENODEV;
 
 static ssize_t proc_scsi_host_write(struct file *file, const char __user *buf,
                            size_t count, loff_t *ppos)
 {
-       struct Scsi_Host *shost = PDE(file_inode(file))->data;
+       struct Scsi_Host *shost = PDE_DATA(file_inode(file));
        ssize_t ret = -ENOMEM;
        char *page;
     
 
 static int proc_scsi_host_open(struct inode *inode, struct file *file)
 {
-       return single_open_size(file, proc_scsi_show, PDE(inode)->data,
+       return single_open_size(file, proc_scsi_show, PDE_DATA(inode),
                                4 * PAGE_SIZE);
 }
 
 
 static ssize_t rndis_proc_write(struct file *file, const char __user *buffer,
                                size_t count, loff_t *ppos)
 {
-       rndis_params *p = PDE(file_inode(file))->data;
+       rndis_params *p = PDE_DATA(file_inode(file));
        u32 speed = 0;
        int i, fl_speed = 0;
 
 
 static int rndis_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, rndis_proc_show, PDE(inode)->data);
+       return single_open(file, rndis_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations rndis_proc_fops = {
 
        struct nd_struct *nd;
        int rtn = 0;
 
-       struct proc_dir_entry *de;
-
        rtn = try_module_get(THIS_MODULE);
        if (!rtn)
                return -ENXIO;
        /*
         *  Get the node pointer, and fail if it doesn't exist.
         */
-       de = PDE(inode);
-       if (!de) {
-               rtn = -ENXIO;
-               goto done;
-       }
-       nd = (struct nd_struct *)de->data;
+       nd = PDE_DATA(inode);
        if (!nd) {
                rtn = -ENXIO;
                goto done;
 
 static int dgrp_mon_open(struct inode *inode, struct file *file)
 {
        struct nd_struct *nd;
-       struct proc_dir_entry *de;
        struct timeval tv;
        uint32_t time;
        u8 *buf;
        /*
         *  Get the node pointer, and fail if it doesn't exist.
         */
-       de = PDE(inode);
-       if (!de) {
-               rtn = -ENXIO;
-               goto done;
-       }
-
-       nd = (struct nd_struct *)de->data;
+       nd = PDE_DATA(inode);
        if (!nd) {
                rtn = -ENXIO;
                goto done;
 
 static int dgrp_net_open(struct inode *inode, struct file *file)
 {
        struct nd_struct *nd;
-       struct proc_dir_entry *de;
        ulong  lock_flags;
        int rtn;
 
        /*
         *  Get the node pointer, and fail if it doesn't exist.
         */
-       de = PDE(inode);
-       if (!de) {
-               rtn = -ENXIO;
-               goto done;
-       }
-
-       nd = (struct nd_struct *) de->data;
+       nd = PDE_DATA(inode);
        if (!nd) {
                rtn = -ENXIO;
                goto done;
 
        rtn = seq_open(file, &ports_seq_ops);
        if (!rtn) {
                seq = file->private_data;
-               seq->private = PDE(inode)->data;
+               seq->private = PDE_DATA(inode);
        }
 
        return rtn;
 
 #define RO_FOPS(name)  \
 static int name##_open(struct inode *inode, struct file *file) \
 {                                                              \
-       return single_open(file, show_##name, PDE(inode)->data);\
+       return single_open(file, show_##name, PDE_DATA(inode));\
 }                                                              \
 static const struct file_operations name##_ops = {             \
        .open = name##_open,                                    \
 #define RW_FOPS(name)  \
 static int name##_open(struct inode *inode, struct file *file) \
 {                                                              \
-       return single_open(file, show_##name, PDE(inode)->data);\
+       return single_open(file, show_##name, PDE_DATA(inode));\
 }                                                              \
 static const struct file_operations name##_ops = {             \
        .open = name##_open,                                    \
        if (bypass_param < 0)
                return -1;
 
-       set_bypass_fn(PDE(file_inode(file))->data, bypass_param);
+       set_bypass_fn(PDE_DATA(file_inode(file)), bypass_param);
        return count;
 }
 static int show_bypass(struct seq_file *m, void *v)
        if (tap_param < 0)
                return -1;
 
-       set_tap_fn(PDE(file_inode(file))->data, tap_param);
+       set_tap_fn(PDE_DATA(file_inode(file)), tap_param);
        return count;
 }
 static int show_tap(struct seq_file *m, void *v)
        if (tap_param < 0)
                return -1;
 
-       set_disc_fn(PDE(file_inode(file))->data, tap_param);
+       set_disc_fn(PDE_DATA(file_inode(file)), tap_param);
        return count;
 }
 static int show_disc(struct seq_file *m, void *v)
 static ssize_t bypass_wd_write(struct file *file, const char __user *buffer,
                                  size_t count, loff_t *pos)
 {
-       bpctl_dev_t *dev = PDE(file_inode(file))->data;
+       bpctl_dev_t *dev = PDE_DATA(file_inode(file));
        int timeout;
        int ret = kstrtoint_from_user(buffer, count, 10, &timeout);
        if (ret)
 static ssize_t tpl_write(struct file *file, const char __user *buffer,
                                  size_t count, loff_t *pos)
 {
-       bpctl_dev_t *dev = PDE(file_inode(file))->data;
+       bpctl_dev_t *dev = PDE_DATA(file_inode(file));
        int tpl_param = user_on_off(buffer, count);
        if (tpl_param < 0)
                return -1;
 static ssize_t wait_at_pwup_write(struct file *file, const char __user *buffer,
                                  size_t count, loff_t *pos)
 {
-       bpctl_dev_t *dev = PDE(file_inode(file))->data;
+       bpctl_dev_t *dev = PDE_DATA(file_inode(file));
        int tpl_param = user_on_off(buffer, count);
        if (tpl_param < 0)
                return -1;
 static ssize_t hw_reset_write(struct file *file, const char __user *buffer,
                                  size_t count, loff_t *pos)
 {
-       bpctl_dev_t *dev = PDE(file_inode(file))->data;
+       bpctl_dev_t *dev = PDE_DATA(file_inode(file));
        int tpl_param = user_on_off(buffer, count);
        if (tpl_param < 0)
                return -1;
        if (bypass_param < 0)
                return -EINVAL;
 
-       set_dis_bypass_fn(PDE(file_inode(file))->data, bypass_param);
+       set_dis_bypass_fn(PDE_DATA(file_inode(file)), bypass_param);
        return count;
 }
 static int show_dis_bypass(struct seq_file *m, void *v)
        if (tap_param < 0)
                return -EINVAL;
 
-       set_dis_tap_fn(PDE(file_inode(file))->data, tap_param);
+       set_dis_tap_fn(PDE_DATA(file_inode(file)), tap_param);
        return count;
 }
 static int show_dis_tap(struct seq_file *m, void *v)
        if (tap_param < 0)
                return -EINVAL;
 
-       set_dis_disc_fn(PDE(file_inode(file))->data, tap_param);
+       set_dis_disc_fn(PDE_DATA(file_inode(file)), tap_param);
        return count;
 }
 static int show_dis_disc(struct seq_file *m, void *v)
        if (bypass_param < 0)
                return -EINVAL;
 
-       set_bypass_pwup_fn(PDE(file_inode(file))->data, bypass_param);
+       set_bypass_pwup_fn(PDE_DATA(file_inode(file)), bypass_param);
        return count;
 }
 static int show_bypass_pwup(struct seq_file *m, void *v)
        if (bypass_param < 0)
                return -EINVAL;
 
-       set_bypass_pwoff_fn(PDE(file_inode(file))->data, bypass_param);
+       set_bypass_pwoff_fn(PDE_DATA(file_inode(file)), bypass_param);
        return count;
 }
 static int show_bypass_pwoff(struct seq_file *m, void *v)
        if (tap_param < 0)
                return -EINVAL;
 
-       set_tap_pwup_fn(PDE(file_inode(file))->data, tap_param);
+       set_tap_pwup_fn(PDE_DATA(file_inode(file)), tap_param);
        return count;
 }
 static int show_tap_pwup(struct seq_file *m, void *v)
        if (tap_param < 0)
                return -EINVAL;
 
-       set_disc_pwup_fn(PDE(file_inode(file))->data, tap_param);
+       set_disc_pwup_fn(PDE_DATA(file_inode(file)), tap_param);
        return count;
 }
 static int show_disc_pwup(struct seq_file *m, void *v)
        if (bypass_param < 0)
                return -EINVAL;
 
-       set_std_nic_fn(PDE(file_inode(file))->data, bypass_param);
+       set_std_nic_fn(PDE_DATA(file_inode(file)), bypass_param);
        return count;
 }
 static int show_std_nic(struct seq_file *m, void *v)
        else if (strcmp(kbuf, "disc") == 0)
                bypass_param = 2;
 
-       set_wd_exp_mode_fn(PDE(file_inode(file))->data, bypass_param);
+       set_wd_exp_mode_fn(PDE_DATA(file_inode(file)), bypass_param);
 
        return count;
 }
        int ret = kstrtoint_from_user(buffer, count, 10, &timeout);
        if (ret)
                return ret;
-       set_wd_autoreset_fn(PDE(file_inode(file))->data, timeout);
+       set_wd_autoreset_fn(PDE_DATA(file_inode(file)), timeout);
        return count;
 }
 static int show_wd_autoreset(struct seq_file *m, void *v)
 
 
 static int uart_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, uart_proc_show, PDE(inode)->data);
+       return single_open(file, uart_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations uart_proc_fops = {
 
 
 static int proc_udc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, proc_udc_show, PDE(inode)->data);
+       return single_open(file, proc_udc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations proc_ops = {
 
 
 static int proc_udc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, proc_udc_show, PDE(inode)->data);
+       return single_open(file, proc_udc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations proc_ops = {
 
 static ssize_t rndis_proc_write(struct file *file, const char __user *buffer,
                                size_t count, loff_t *ppos)
 {
-       rndis_params *p = PDE(file_inode(file))->data;
+       rndis_params *p = PDE_DATA(file_inode(file));
        u32 speed = 0;
        int i, fl_speed = 0;
 
 
 static int rndis_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, rndis_proc_show, PDE(inode)->data);
+       return single_open(file, rndis_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations rndis_proc_fops = {
 
 
 static int proc_isp1362_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, proc_isp1362_show, PDE(inode)->data);
+       return single_open(file, proc_isp1362_show, PDE_DATA(inode));
 }
 
 static const struct file_operations proc_ops = {
 
 
 static int proc_sl811h_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, proc_sl811h_show, PDE(inode)->data);
+       return single_open(file, proc_sl811h_show, PDE_DATA(inode));
 }
 
 static const struct file_operations proc_ops = {
 
 adv7393_write_proc(struct file *file, const char __user * buffer,
                   size_t count, loff_t *ppos)
 {
-       struct adv7393fb_device *fbdev = PDE(file_inode(file))->data;
+       struct adv7393fb_device *fbdev = PDE_DATA(file_inode(file));
        unsigned int val;
        int ret;
 
 
 static ssize_t
 proc_bus_zorro_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos)
 {
-       struct inode *ino = file_inode(file);
-       struct proc_dir_entry *dp = PDE(ino);
-       struct zorro_dev *z = dp->data;
+       struct zorro_dev *z = PDE_DATA(file_inode(file));
        struct ConfigDev cd;
        loff_t pos = *ppos;
 
 
                return ret;
 
        m = file->private_data;
-       m->private = PDE(inode)->data;
+       m->private = PDE_DATA(inode);
 
        return 0;
 }
        struct seq_file *m;
        int ret;
 
-       cell = PDE(inode)->data;
+       cell = PDE_DATA(inode);
        if (!cell)
                return -ENOENT;
 
        struct seq_file *m;
        int ret;
 
-       cell = PDE(inode)->data;
+       cell = PDE_DATA(inode);
        if (!cell)
                return -ENOENT;
 
        struct seq_file *m;
        int ret;
 
-       cell = PDE(inode)->data;
+       cell = PDE_DATA(inode);
        if (!cell)
                return -ENOENT;
 
 
 
 static int ext4_mb_seq_groups_open(struct inode *inode, struct file *file)
 {
-       struct super_block *sb = PDE(inode)->data;
+       struct super_block *sb = PDE_DATA(inode);
        int rc;
 
        rc = seq_open(file, &ext4_mb_seq_groups_ops);
 
 
 static int options_open_fs(struct inode *inode, struct file *file)
 {
-       return single_open(file, options_seq_show, PDE(inode)->data);
+       return single_open(file, options_seq_show, PDE_DATA(inode));
 }
 
 static const struct file_operations ext4_seq_options_fops = {
 
 
 static int jbd2_seq_info_open(struct inode *inode, struct file *file)
 {
-       journal_t *journal = PDE(inode)->data;
+       journal_t *journal = PDE_DATA(inode);
        struct jbd2_stats_proc_session *s;
        int rc, size;
 
 
 
 static void *proc_follow_link(struct dentry *dentry, struct nameidata *nd)
 {
-       nd_set_link(nd, PDE(dentry->d_inode)->data);
+       nd_set_link(nd, PDE_DATA(dentry->d_inode));
        return NULL;
 }
 
 
 
 static int property_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, property_proc_show, PDE(inode)->data);
+       return single_open(file, property_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations property_proc_fops = {
 
        return PROC_I(inode)->pde;
 }
 
+static inline void *PDE_DATA(const struct inode *inode)
+{
+       return PROC_I(inode)->pde->data;
+}
+
 static inline struct net *PDE_NET(struct proc_dir_entry *pde)
 {
        return pde->parent->data;
 
        seq = file->private_data;
        seq->private = iter;
 
-       iter->iface = PDE(inode)->data;
+       iter->iface = PDE_DATA(inode);
        iter->ns    = get_ipc_ns(current->nsproxy->ipc_ns);
 out:
        return ret;
 
 static ssize_t write_irq_affinity(int type, struct file *file,
                const char __user *buffer, size_t count, loff_t *pos)
 {
-       unsigned int irq = (int)(long)PDE(file_inode(file))->data;
+       unsigned int irq = (int)(long)PDE_DATA(file_inode(file));
        cpumask_var_t new_value;
        int err;
 
 
 static int irq_affinity_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, irq_affinity_proc_show, PDE(inode)->data);
+       return single_open(file, irq_affinity_proc_show, PDE_DATA(inode));
 }
 
 static int irq_affinity_list_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, irq_affinity_list_proc_show, PDE(inode)->data);
+       return single_open(file, irq_affinity_list_proc_show, PDE_DATA(inode));
 }
 
 static int irq_affinity_hint_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, irq_affinity_hint_proc_show, PDE(inode)->data);
+       return single_open(file, irq_affinity_hint_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations irq_affinity_proc_fops = {
 
 static int default_affinity_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, default_affinity_show, PDE(inode)->data);
+       return single_open(file, default_affinity_show, PDE_DATA(inode));
 }
 
 static const struct file_operations default_affinity_proc_fops = {
 
 static int irq_node_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, irq_node_proc_show, PDE(inode)->data);
+       return single_open(file, irq_node_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations irq_node_proc_fops = {
 
 static int irq_spurious_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, irq_spurious_proc_show, PDE(inode)->data);
+       return single_open(file, irq_spurious_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations irq_spurious_proc_fops = {
 
 
 static int vlandev_seq_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, vlandev_seq_show, PDE(inode)->data);
+       return single_open(file, vlandev_seq_show, PDE_DATA(inode));
 }
 
 static const struct file_operations vlandev_fops = {
 
        page = get_zeroed_page(GFP_KERNEL);
        if (!page)
                return -ENOMEM;
-       dev = PDE(file_inode(file))->data;
+       dev = PDE_DATA(file_inode(file));
        if (!dev->ops->proc_read)
                length = -EINVAL;
        else {
 
        struct bt_sock_list *sk_list;
        struct bt_seq_state *s;
 
-       sk_list = PDE(inode)->data;
+       sk_list = PDE_DATA(inode);
        s = __seq_open_private(file, &bt_seq_ops,
                               sizeof(struct bt_seq_state));
        if (!s)
 
 
 static int cmtp_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, cmtp_proc_show, PDE(inode)->data);
+       return single_open(file, cmtp_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations cmtp_proc_fops = {
 
 
 static int bcm_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, bcm_proc_show, PDE(inode)->data);
+       return single_open(file, bcm_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations bcm_proc_fops = {
 
 
 static int can_rcvlist_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, can_rcvlist_proc_show, PDE(inode)->data);
+       return single_open(file, can_rcvlist_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations can_rcvlist_proc_fops = {
 
 
        if (!ret) {
                struct seq_file *sf = file->private_data;
-               sf->private = PDE(inode)->data;
+               sf->private = PDE_DATA(inode);
        }
        return ret;
 };
 
 
 static int pgctrl_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, pgctrl_show, PDE(inode)->data);
+       return single_open(file, pgctrl_show, PDE_DATA(inode));
 }
 
 static const struct file_operations pktgen_fops = {
 
 static int pktgen_if_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, pktgen_if_show, PDE(inode)->data);
+       return single_open(file, pktgen_if_show, PDE_DATA(inode));
 }
 
 static const struct file_operations pktgen_if_fops = {
 
 static int pktgen_thread_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, pktgen_thread_show, PDE(inode)->data);
+       return single_open(file, pktgen_thread_show, PDE_DATA(inode));
 }
 
 static const struct file_operations pktgen_thread_fops = {
 
 
        if (!ret) {
                struct seq_file *sf = file->private_data;
-               struct clusterip_config *c = PDE(inode)->data;
+               struct clusterip_config *c = PDE_DATA(inode);
 
                sf->private = c;
 
 
 static int clusterip_proc_release(struct inode *inode, struct file *file)
 {
-       struct clusterip_config *c = PDE(inode)->data;
+       struct clusterip_config *c = PDE_DATA(inode);
        int ret;
 
        ret = seq_release(inode, file);
 static ssize_t clusterip_proc_write(struct file *file, const char __user *input,
                                size_t size, loff_t *ofs)
 {
-       struct clusterip_config *c = PDE(file_inode(file))->data;
+       struct clusterip_config *c = PDE_DATA(file_inode(file));
 #define PROC_WRITELEN  10
        char buffer[PROC_WRITELEN+1];
        unsigned long nodenum;
 
 
 int tcp_seq_open(struct inode *inode, struct file *file)
 {
-       struct tcp_seq_afinfo *afinfo = PDE(inode)->data;
+       struct tcp_seq_afinfo *afinfo = PDE_DATA(inode);
        struct tcp_iter_state *s;
        int err;
 
 
 
 int udp_seq_open(struct inode *inode, struct file *file)
 {
-       struct udp_seq_afinfo *afinfo = PDE(inode)->data;
+       struct udp_seq_afinfo *afinfo = PDE_DATA(inode);
        struct udp_iter_state *s;
        int err;
 
 
 
 static int snmp6_dev_seq_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, snmp6_dev_seq_show, PDE(inode)->data);
+       return single_open(file, snmp6_dev_seq_show, PDE_DATA(inode));
 }
 
 static const struct file_operations snmp6_dev_seq_fops = {
 
                           sizeof(struct xt_names_priv));
        if (!ret) {
                priv = ((struct seq_file *)file->private_data)->private;
-               priv->af = (unsigned long)PDE(inode)->data;
+               priv->af = (unsigned long)PDE_DATA(inode);
        }
        return ret;
 }
 
        seq = file->private_data;
        seq->private = trav;
-       trav->nfproto = (unsigned long)PDE(inode)->data;
+       trav->nfproto = (unsigned long)PDE_DATA(inode);
        return 0;
 }
 
 
        seq = file->private_data;
        seq->private = trav;
-       trav->nfproto = (unsigned long)PDE(inode)->data;
+       trav->nfproto = (unsigned long)PDE_DATA(inode);
        return 0;
 }
 
 
 
        if (!ret) {
                struct seq_file *sf = file->private_data;
-               sf->private = PDE(inode)->data;
+               sf->private = PDE_DATA(inode);
        }
        return ret;
 }
 
 
 static int recent_seq_open(struct inode *inode, struct file *file)
 {
-       struct proc_dir_entry *pde = PDE(inode);
        struct recent_iter_state *st;
 
        st = __seq_open_private(file, &recent_seq_ops, sizeof(*st));
        if (st == NULL)
                return -ENOMEM;
 
-       st->table    = pde->data;
+       st->table    = PDE_DATA(inode);
        return 0;
 }
 
 recent_mt_proc_write(struct file *file, const char __user *input,
                     size_t size, loff_t *loff)
 {
-       const struct proc_dir_entry *pde = PDE(file_inode(file));
-       struct recent_table *t = pde->data;
+       struct recent_table *t = PDE_DATA(file_inode(file));
        struct recent_entry *e;
        char buf[sizeof("+b335:1d35:1e55:dead:c0de:1715:5afe:c0de")];
        const char *c = buf;
 
 static ssize_t cache_read_procfs(struct file *filp, char __user *buf,
                                 size_t count, loff_t *ppos)
 {
-       struct cache_detail *cd = PDE(file_inode(filp))->data;
+       struct cache_detail *cd = PDE_DATA(file_inode(filp));
 
        return cache_read(filp, buf, count, ppos, cd);
 }
 static ssize_t cache_write_procfs(struct file *filp, const char __user *buf,
                                  size_t count, loff_t *ppos)
 {
-       struct cache_detail *cd = PDE(file_inode(filp))->data;
+       struct cache_detail *cd = PDE_DATA(file_inode(filp));
 
        return cache_write(filp, buf, count, ppos, cd);
 }
 
 static unsigned int cache_poll_procfs(struct file *filp, poll_table *wait)
 {
-       struct cache_detail *cd = PDE(file_inode(filp))->data;
+       struct cache_detail *cd = PDE_DATA(file_inode(filp));
 
        return cache_poll(filp, wait, cd);
 }
                               unsigned int cmd, unsigned long arg)
 {
        struct inode *inode = file_inode(filp);
-       struct cache_detail *cd = PDE(inode)->data;
+       struct cache_detail *cd = PDE_DATA(inode);
 
        return cache_ioctl(inode, filp, cmd, arg, cd);
 }
 
 static int cache_open_procfs(struct inode *inode, struct file *filp)
 {
-       struct cache_detail *cd = PDE(inode)->data;
+       struct cache_detail *cd = PDE_DATA(inode);
 
        return cache_open(inode, filp, cd);
 }
 
 static int cache_release_procfs(struct inode *inode, struct file *filp)
 {
-       struct cache_detail *cd = PDE(inode)->data;
+       struct cache_detail *cd = PDE_DATA(inode);
 
        return cache_release(inode, filp, cd);
 }
 
 static int content_open_procfs(struct inode *inode, struct file *filp)
 {
-       struct cache_detail *cd = PDE(inode)->data;
+       struct cache_detail *cd = PDE_DATA(inode);
 
        return content_open(inode, filp, cd);
 }
 
 static int content_release_procfs(struct inode *inode, struct file *filp)
 {
-       struct cache_detail *cd = PDE(inode)->data;
+       struct cache_detail *cd = PDE_DATA(inode);
 
        return content_release(inode, filp, cd);
 }
 
 static int open_flush_procfs(struct inode *inode, struct file *filp)
 {
-       struct cache_detail *cd = PDE(inode)->data;
+       struct cache_detail *cd = PDE_DATA(inode);
 
        return open_flush(inode, filp, cd);
 }
 
 static int release_flush_procfs(struct inode *inode, struct file *filp)
 {
-       struct cache_detail *cd = PDE(inode)->data;
+       struct cache_detail *cd = PDE_DATA(inode);
 
        return release_flush(inode, filp, cd);
 }
 static ssize_t read_flush_procfs(struct file *filp, char __user *buf,
                            size_t count, loff_t *ppos)
 {
-       struct cache_detail *cd = PDE(file_inode(filp))->data;
+       struct cache_detail *cd = PDE_DATA(file_inode(filp));
 
        return read_flush(filp, buf, count, ppos, cd);
 }
                                  const char __user *buf,
                                  size_t count, loff_t *ppos)
 {
-       struct cache_detail *cd = PDE(file_inode(filp))->data;
+       struct cache_detail *cd = PDE_DATA(file_inode(filp));
 
        return write_flush(filp, buf, count, ppos, cd);
 }
 
 
 static int rpc_proc_open(struct inode *inode, struct file *file)
 {
-       return single_open(file, rpc_proc_show, PDE(inode)->data);
+       return single_open(file, rpc_proc_show, PDE_DATA(inode));
 }
 
 static const struct file_operations rpc_proc_fops = {
 
        struct snd_info_entry *entry;
        struct snd_info_private_data *data;
        struct snd_info_buffer *buffer;
-       struct proc_dir_entry *p;
        int mode, err;
 
        mutex_lock(&info_mutex);
-       p = PDE(inode);
-       entry = p == NULL ? NULL : (struct snd_info_entry *)p->data;
+       entry = PDE_DATA(inode);
        if (entry == NULL || ! entry->p) {
                mutex_unlock(&info_mutex);
                return -ENODEV;