Merge tag 's390-6.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 29 Oct 2022 00:11:26 +0000 (17:11 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 29 Oct 2022 00:11:26 +0000 (17:11 -0700)
Pull s390 fixes from Vasily Gorbik:

 - Remove outdated linux390 link from MAINTAINERS

 - Add few missing EX_TABLE entries to inline assemblies

 - Fix raw data collection for pai_ext PMU

 - Add kernel image secure boot trailer for future firmware versions

 - Fix out-of-bounds access on cio_ignore free

 - Fix memory allocation of mdev_types array in vfio-ap

* tag 's390-6.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
  s390/vfio-ap: Fix memory allocation for mdev_types array
  s390/cio: fix out-of-bounds access on cio_ignore free
  s390/pai: fix raw data collection for PMU pai_ext
  s390/boot: add secure boot trailer
  s390/pci: add missing EX_TABLE entries to __pcistg_mio_inuser()/__pcilg_mio_inuser()
  s390/futex: add missing EX_TABLE entry to __futex_atomic_op()
  s390/uaccess: add missing EX_TABLE entries to __clear_user()
  MAINTAINERS: remove outdated linux390 link

MAINTAINERS
arch/s390/boot/vmlinux.lds.S
arch/s390/include/asm/futex.h
arch/s390/kernel/perf_pai_ext.c
arch/s390/lib/uaccess.c
arch/s390/pci/pci_mmio.c
drivers/s390/cio/css.c
drivers/s390/crypto/vfio_ap_private.h

index a74d56c..2034e7d 100644 (file)
@@ -11258,7 +11258,6 @@ M:      Claudio Imbrenda <imbrenda@linux.ibm.com>
 R:     David Hildenbrand <david@redhat.com>
 L:     kvm@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 T:     git git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git
 F:     Documentation/virt/kvm/s390*
 F:     arch/s390/include/asm/gmap.h
@@ -17998,7 +17997,6 @@ R:      Christian Borntraeger <borntraeger@linux.ibm.com>
 R:     Sven Schnelle <svens@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 T:     git git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git
 F:     Documentation/driver-api/s390-drivers.rst
 F:     Documentation/s390/
@@ -18010,7 +18008,6 @@ M:      Vineeth Vijayan <vneethv@linux.ibm.com>
 M:     Peter Oberparleiter <oberpar@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 F:     drivers/s390/cio/
 
 S390 DASD DRIVER
@@ -18018,7 +18015,6 @@ M:      Stefan Haberland <sth@linux.ibm.com>
 M:     Jan Hoeppner <hoeppner@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 F:     block/partitions/ibm.c
 F:     drivers/s390/block/dasd*
 F:     include/linux/dasd_mod.h
@@ -18028,7 +18024,6 @@ M:      Matthew Rosato <mjrosato@linux.ibm.com>
 M:     Gerald Schaefer <gerald.schaefer@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 F:     drivers/iommu/s390-iommu.c
 
 S390 IUCV NETWORK LAYER
@@ -18037,7 +18032,6 @@ M:      Wenjia Zhang <wenjia@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 L:     netdev@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 F:     drivers/s390/net/*iucv*
 F:     include/net/iucv/
 F:     net/iucv/
@@ -18048,7 +18042,6 @@ M:      Wenjia Zhang <wenjia@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 L:     netdev@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 F:     drivers/s390/net/
 
 S390 PCI SUBSYSTEM
@@ -18056,7 +18049,6 @@ M:      Niklas Schnelle <schnelle@linux.ibm.com>
 M:     Gerald Schaefer <gerald.schaefer@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 F:     arch/s390/pci/
 F:     drivers/pci/hotplug/s390_pci_hpc.c
 F:     Documentation/s390/pci.rst
@@ -18067,7 +18059,6 @@ M:      Halil Pasic <pasic@linux.ibm.com>
 M:     Jason Herne <jjherne@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 F:     Documentation/s390/vfio-ap*
 F:     drivers/s390/crypto/vfio_ap*
 
@@ -18096,7 +18087,6 @@ S390 ZCRYPT DRIVER
 M:     Harald Freudenberger <freude@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 F:     drivers/s390/crypto/
 
 S390 ZFCP DRIVER
@@ -18104,7 +18094,6 @@ M:      Steffen Maier <maier@linux.ibm.com>
 M:     Benjamin Block <bblock@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 F:     drivers/s390/scsi/zfcp_*
 
 S3C ADC BATTERY DRIVER
@@ -18676,7 +18665,6 @@ M:      Wenjia Zhang <wenjia@linux.ibm.com>
 M:     Jan Karcher <jaka@linux.ibm.com>
 L:     linux-s390@vger.kernel.org
 S:     Supported
-W:     http://www.ibm.com/developerworks/linux/linux390/
 F:     net/smc/
 
 SHARP GP2AP002A00F/GP2AP002S00F SENSOR DRIVER
index af5c686..fa9d33b 100644 (file)
@@ -102,8 +102,17 @@ SECTIONS
                _compressed_start = .;
                *(.vmlinux.bin.compressed)
                _compressed_end = .;
-               FILL(0xff);
-               . = ALIGN(4096);
+       }
+
+#define SB_TRAILER_SIZE 32
+       /* Trailer needed for Secure Boot */
+       . += SB_TRAILER_SIZE; /* make sure .sb.trailer does not overwrite the previous section */
+       . = ALIGN(4096) - SB_TRAILER_SIZE;
+       .sb.trailer : {
+               QUAD(0)
+               QUAD(0)
+               QUAD(0)
+               QUAD(0x000000207a49504c)
        }
        _end = .;
 
index e08c882..eaeaeb3 100644 (file)
@@ -17,7 +17,8 @@
                "3: jl    1b\n"                                         \
                "   lhi   %0,0\n"                                       \
                "4: sacf  768\n"                                        \
-               EX_TABLE(0b,4b) EX_TABLE(2b,4b) EX_TABLE(3b,4b)         \
+               EX_TABLE(0b,4b) EX_TABLE(1b,4b)                         \
+               EX_TABLE(2b,4b) EX_TABLE(3b,4b)                         \
                : "=d" (ret), "=&d" (oldval), "=&d" (newval),           \
                  "=m" (*uaddr)                                         \
                : "0" (-EFAULT), "d" (oparg), "a" (uaddr),              \
index d5c7c1e..74b53c5 100644 (file)
@@ -459,6 +459,7 @@ static int paiext_push_sample(void)
                raw.frag.data = cpump->save;
                raw.size = raw.frag.size;
                data.raw = &raw;
+               data.sample_flags |= PERF_SAMPLE_RAW;
        }
 
        overflow = perf_event_overflow(event, &data, &regs);
index 58033df..720036f 100644 (file)
@@ -157,7 +157,7 @@ unsigned long __clear_user(void __user *to, unsigned long size)
        asm volatile(
                "   lr    0,%[spec]\n"
                "0: mvcos 0(%1),0(%4),%0\n"
-               "   jz    4f\n"
+               "6: jz    4f\n"
                "1: algr  %0,%2\n"
                "   slgr  %1,%2\n"
                "   j     0b\n"
@@ -167,11 +167,11 @@ unsigned long __clear_user(void __user *to, unsigned long size)
                "   clgr  %0,%3\n"      /* copy crosses next page boundary? */
                "   jnh   5f\n"
                "3: mvcos 0(%1),0(%4),%3\n"
-               "   slgr  %0,%3\n"
+               "7: slgr  %0,%3\n"
                "   j     5f\n"
                "4: slgr  %0,%0\n"
                "5:\n"
-               EX_TABLE(0b,2b) EX_TABLE(3b,5b)
+               EX_TABLE(0b,2b) EX_TABLE(6b,2b) EX_TABLE(3b,5b) EX_TABLE(7b,5b)
                : "+a" (size), "+a" (to), "+a" (tmp1), "=a" (tmp2)
                : "a" (empty_zero_page), [spec] "d" (spec.val)
                : "cc", "memory", "0");
index 080c886..5880893 100644 (file)
@@ -64,7 +64,7 @@ static inline int __pcistg_mio_inuser(
        asm volatile (
                "       sacf    256\n"
                "0:     llgc    %[tmp],0(%[src])\n"
-               "       sllg    %[val],%[val],8\n"
+               "4:     sllg    %[val],%[val],8\n"
                "       aghi    %[src],1\n"
                "       ogr     %[val],%[tmp]\n"
                "       brctg   %[cnt],0b\n"
@@ -72,7 +72,7 @@ static inline int __pcistg_mio_inuser(
                "2:     ipm     %[cc]\n"
                "       srl     %[cc],28\n"
                "3:     sacf    768\n"
-               EX_TABLE(0b, 3b) EX_TABLE(1b, 3b) EX_TABLE(2b, 3b)
+               EX_TABLE(0b, 3b) EX_TABLE(4b, 3b) EX_TABLE(1b, 3b) EX_TABLE(2b, 3b)
                :
                [src] "+a" (src), [cnt] "+d" (cnt),
                [val] "+d" (val), [tmp] "=d" (tmp),
@@ -215,10 +215,10 @@ static inline int __pcilg_mio_inuser(
                "2:     ahi     %[shift],-8\n"
                "       srlg    %[tmp],%[val],0(%[shift])\n"
                "3:     stc     %[tmp],0(%[dst])\n"
-               "       aghi    %[dst],1\n"
+               "5:     aghi    %[dst],1\n"
                "       brctg   %[cnt],2b\n"
                "4:     sacf    768\n"
-               EX_TABLE(0b, 4b) EX_TABLE(1b, 4b) EX_TABLE(3b, 4b)
+               EX_TABLE(0b, 4b) EX_TABLE(1b, 4b) EX_TABLE(3b, 4b) EX_TABLE(5b, 4b)
                :
                [ioaddr_len] "+&d" (ioaddr_len.pair),
                [cc] "+d" (cc), [val] "=d" (val),
index 913b6dd..c7db953 100644 (file)
@@ -753,13 +753,9 @@ static int __unset_online(struct device *dev, void *data)
 {
        struct idset *set = data;
        struct subchannel *sch = to_subchannel(dev);
-       struct ccw_device *cdev;
 
-       if (sch->st == SUBCHANNEL_TYPE_IO) {
-               cdev = sch_get_cdev(sch);
-               if (cdev && cdev->online)
-                       idset_sch_del(set, sch->schid);
-       }
+       if (sch->st == SUBCHANNEL_TYPE_IO && sch->config.ena)
+               idset_sch_del(set, sch->schid);
 
        return 0;
 }
index 2eddd5f..976a65f 100644 (file)
@@ -52,7 +52,7 @@ struct ap_matrix_dev {
        struct mutex guests_lock; /* serializes access to each KVM guest */
        struct mdev_parent parent;
        struct mdev_type mdev_type;
-       struct mdev_type *mdev_types[];
+       struct mdev_type *mdev_types[1];
 };
 
 extern struct ap_matrix_dev *matrix_dev;