Showing error 1756

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: fs/locks.c
Line in file: 1248
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 20:24:52 UTC


Source:

1218
1219        break_time = 0;
1220        if (lease_break_time > 0) {
1221                break_time = jiffies + lease_break_time * HZ;
1222                if (break_time == 0)
1223                        break_time++;        /* so that 0 means no break time */
1224        }
1225
1226        for (fl = flock; fl && IS_LEASE(fl); fl = fl->fl_next) {
1227                if (fl->fl_type != future) {
1228                        fl->fl_type = future;
1229                        fl->fl_break_time = break_time;
1230                        /* lease must have lmops break callback */
1231                        fl->fl_lmops->fl_break(fl);
1232                }
1233        }
1234
1235        if (i_have_this_lease || (mode & O_NONBLOCK)) {
1236                error = -EWOULDBLOCK;
1237                goto out;
1238        }
1239
1240restart:
1241        break_time = flock->fl_break_time;
1242        if (break_time != 0) {
1243                break_time -= jiffies;
1244                if (break_time == 0)
1245                        break_time++;
1246        }
1247        locks_insert_block(flock, new_fl);
1248        error = wait_event_interruptible_timeout(new_fl->fl_wait,
1249                                                !new_fl->fl_next, break_time);
1250        __locks_delete_block(new_fl);
1251        if (error >= 0) {
1252                if (error == 0)
1253                        time_out_leases(inode);
1254                /* Wait for the next lease that has not been broken yet */
1255                for (flock = inode->i_flock; flock && IS_LEASE(flock);
1256                                flock = flock->fl_next) {
1257                        if (flock->fl_type & F_INPROGRESS)
1258                                goto restart;
Show full sources