Showing error 1573

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: drivers/media/dvb/dvb-core/dvb_frontend.c
Line in file: 1727
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-05-29 20:11:37 UTC


Source:

1697static int dvb_frontend_open(struct inode *inode, struct file *file)
1698{
1699        struct dvb_device *dvbdev = file->private_data;
1700        struct dvb_frontend *fe = dvbdev->priv;
1701        struct dvb_frontend_private *fepriv = fe->frontend_priv;
1702        struct dvb_adapter *adapter = fe->dvb;
1703        int ret;
1704
1705        dprintk ("%s\n", __func__);
1706
1707        if (adapter->mfe_shared) {
1708                mutex_lock (&adapter->mfe_lock);
1709
1710                if (adapter->mfe_dvbdev == NULL)
1711                        adapter->mfe_dvbdev = dvbdev;
1712
1713                else if (adapter->mfe_dvbdev != dvbdev) {
1714                        struct dvb_device
1715                                *mfedev = adapter->mfe_dvbdev;
1716                        struct dvb_frontend
1717                                *mfe = mfedev->priv;
1718                        struct dvb_frontend_private
1719                                *mfepriv = mfe->frontend_priv;
1720                        int mferetry = (dvb_mfe_wait_time << 1);
1721
1722                        mutex_unlock (&adapter->mfe_lock);
1723                        while (mferetry-- && (mfedev->users != -1 ||
1724                                        mfepriv->thread != NULL)) {
1725                                if(msleep_interruptible(500)) {
1726                                        if(signal_pending(current))
1727                                                return -EINTR;
1728                                }
1729                        }
1730
1731                        mutex_lock (&adapter->mfe_lock);
1732                        if(adapter->mfe_dvbdev != dvbdev) {
1733                                mfedev = adapter->mfe_dvbdev;
1734                                mfe = mfedev->priv;
1735                                mfepriv = mfe->frontend_priv;
1736                                if (mfedev->users != -1 ||
1737                                                mfepriv->thread != NULL) {
Show full sources