In the Linux kernel, the following vulnerability has been resolved:
coresight: holding cscfgcsdevlock while removing cscfg from csdev
There'll be possible race scenario for coresight config:
CPU0 CPU1 (perf enable) load module cscfgloadconfigsets() activate config. // sysfs (sysactivecnt == 1) ... cscfgcsdevenableactiveconfig() lock(csdev->cscfgcsdevlock) deactivate config // sysfs (sysactiveccnt == 0) cscfgunloadconfigsets() <iterating configcsdevlist> cscfgremoveownedcsdevconfigs() // here load config activate by CPU1 unlock(csdev->cscfgcsdevlock)
iterating configcsdevlist could be raced with configcsdevlist's entry delete.
To resolve this race , hold csdev->cscfgcsdevlock() while cscfgremoveownedcsdevconfigs()