Showing error 764

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/char/ppdev.c
Line in file: 700
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:22:22 UTC


Source:

670        file->private_data = pp;
671
672        return 0;
673}
674
675static int pp_release (struct inode * inode, struct file * file)
676{
677        unsigned int minor = iminor(inode);
678        struct pp_struct *pp = file->private_data;
679        int compat_negot;
680
681        compat_negot = 0;
682        if (!(pp->flags & PP_CLAIMED) && pp->pdev &&
683            (pp->state.mode != IEEE1284_MODE_COMPAT)) {
684                    struct ieee1284_info *info;
685
686                /* parport released, but not in compatibility mode */
687                parport_claim_or_block (pp->pdev);
688                pp->flags |= PP_CLAIMED;
689                info = &pp->pdev->port->ieee1284;
690                pp->saved_state.mode = info->mode;
691                pp->saved_state.phase = info->phase;
692                info->mode = pp->state.mode;
693                info->phase = pp->state.phase;
694                compat_negot = 1;
695        } else if ((pp->flags & PP_CLAIMED) && pp->pdev &&
696            (pp->pdev->port->ieee1284.mode != IEEE1284_MODE_COMPAT)) {
697                compat_negot = 2;
698        }
699        if (compat_negot) {
700                parport_negotiate (pp->pdev->port, IEEE1284_MODE_COMPAT);
701                printk (KERN_DEBUG CHRDEV
702                        "%x: negotiated back to compatibility mode because "
703                        "user-space forgot\n", minor);
704        }
705
706        if (pp->flags & PP_CLAIMED) {
707                struct ieee1284_info *info;
708
709                info = &pp->pdev->port->ieee1284;
710                pp->state.mode = info->mode;
Show full sources