lkml.org 
[lkml]   [2020]   [Sep]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.9 35/90] selinux: sel_avc_get_stat_idx should increase position index
    Date
    From: Vasily Averin <vvs@virtuozzo.com>

    [ Upstream commit 8d269a8e2a8f0bca89022f4ec98de460acb90365 ]

    If seq_file .next function does not change position index,
    read after some lseek can generate unexpected output.

    $ dd if=/sys/fs/selinux/avc/cache_stats # usual output
    lookups hits misses allocations reclaims frees
    817223 810034 7189 7189 6992 7037
    1934894 1926896 7998 7998 7632 7683
    1322812 1317176 5636 5636 5456 5507
    1560571 1551548 9023 9023 9056 9115
    0+1 records in
    0+1 records out
    189 bytes copied, 5,1564e-05 s, 3,7 MB/s

    $# read after lseek to midle of last line
    $ dd if=/sys/fs/selinux/avc/cache_stats bs=180 skip=1
    dd: /sys/fs/selinux/avc/cache_stats: cannot skip to specified offset
    056 9115 <<<< end of last line
    1560571 1551548 9023 9023 9056 9115 <<< whole last line once again
    0+1 records in
    0+1 records out
    45 bytes copied, 8,7221e-05 s, 516 kB/s

    $# read after lseek beyond end of of file
    $ dd if=/sys/fs/selinux/avc/cache_stats bs=1000 skip=1
    dd: /sys/fs/selinux/avc/cache_stats: cannot skip to specified offset
    1560571 1551548 9023 9023 9056 9115 <<<< generates whole last line
    0+1 records in
    0+1 records out
    36 bytes copied, 9,0934e-05 s, 396 kB/s

    https://bugzilla.kernel.org/show_bug.cgi?id=206283

    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Acked-by: Stephen Smalley <sds@tycho.nsa.gov>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    security/selinux/selinuxfs.c | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
    index 72c145dd799f1..ef1226c1c3add 100644
    --- a/security/selinux/selinuxfs.c
    +++ b/security/selinux/selinuxfs.c
    @@ -1416,6 +1416,7 @@ static struct avc_cache_stats *sel_avc_get_stat_idx(loff_t *idx)
    *idx = cpu + 1;
    return &per_cpu(avc_cache_stats, cpu);
    }
    + (*idx)++;
    return NULL;
    }

    --
    2.25.1
    \
     
     \ /
      Last update: 2020-09-18 04:15    [W:3.097 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site