tree 420b566cd05d201ce4be13084a11d60108ceb573
parent 2a5bf23d5b795d5df33dc284e8f5cf8b6a5b4042
parent a4243e1494532ab8fa679a4134153149a71fa331
author Ingo Molnar <mingo@kernel.org> 1542812241 +0100
committer Ingo Molnar <mingo@kernel.org> 1542812241 +0100
mergetag object a4243e1494532ab8fa679a4134153149a71fa331
 type commit
 tag perf-urgent-for-mingo-4.20-20181121
 tagger Arnaldo Carvalho de Melo <acme@redhat.com> 1542805288 -0300
 
 perf/urgent fixes:
 
 - Update kernel ABI headers, one of them lead to a small change in
   the ioctl 'cmd' beautifier in 'perf trace' to support the new ISO7816
   commands. (Arnaldo Carvalho de Melo)
 
 - Restore proper cwd on return from mnt namespace (Jiri Olsa)
 
 - Add feature check for the get_current_dir_name() function used in the
   namespace fix from Jiri, that is not available in systems such as
   Alpine Linux, which uses the  musl libc (Arnaldo Carvalho de Melo)
 
 - Fix crash in 'perf record' when synthesizing the unit for events such
   as 'cpu-clock' (Jiri Olsa)
 
 Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCW/Va0AAKCRCyPKLppCJ+
 J0g4AP9dJ2c0YLzJjSzq7nr1L69sYITdYrACF39h/A9yiD2OTgEA5ISY12u1nkfL
 uLNbCLwdbEQ+6oUdUlID0MyFjynjywc=
 =eLir
 -----END PGP SIGNATURE-----

Merge tag 'perf-urgent-for-mingo-4.20-20181121' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent

Pull perf/urgent fixes:

- Update kernel ABI headers, one of them lead to a small change in
  the ioctl 'cmd' beautifier in 'perf trace' to support the new ISO7816
  commands. (Arnaldo Carvalho de Melo)

- Restore proper cwd on return from mnt namespace (Jiri Olsa)

- Add feature check for the get_current_dir_name() function used in the
  namespace fix from Jiri, that is not available in systems such as
  Alpine Linux, which uses the  musl libc (Arnaldo Carvalho de Melo)

- Fix crash in 'perf record' when synthesizing the unit for events such
  as 'cpu-clock' (Jiri Olsa)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
