1. 20 1月, 2018 2 次提交
  2. 08 1月, 2018 2 次提交
  3. 07 1月, 2018 3 次提交
  4. 30 12月, 2017 3 次提交
  5. 29 12月, 2017 3 次提交
  6. 28 12月, 2017 1 次提交
  7. 26 12月, 2017 1 次提交
    • N
      VFS: don't keep disconnected dentries on d_anon · f1ee6162
      NeilBrown 提交于
      The original purpose of the per-superblock d_anon list was to
      keep disconnected dentries in the cache between consecutive
      requests to the NFS server.  Dentries can be disconnected if
      a client holds a file open and repeatedly performs IO on it,
      and if the server drops the dentry, whether due to memory
      pressure, server restart, or "echo 3 > /proc/sys/vm/drop_caches".
      
      This purpose was thwarted by commit 75a6f82a ("freeing unlinked
      file indefinitely delayed") which caused disconnected dentries
      to be freed as soon as their refcount reached zero.
      
      This means that, when a dentry being used by nfsd gets disconnected, a
      new one needs to be allocated for every request (unless requests
      overlap).  As the dentry has no name, no parent, and no children,
      there is little of value to cache.  As small memory allocations are
      typically fast (from per-cpu free lists) this likely has little cost.
      
      This means that the original purpose of s_anon is no longer relevant:
      there is no longer any need to keep disconnected dentries on a list so
      they appear to be hashed.
      
      However, s_anon now has a new use.  When you mount an NFS filesystem,
      the dentry stored in s_root is just a placebo.  The "real" root dentry
      is allocated using d_obtain_root() and so it kept on the s_anon list.
      I don't know the reason for this, but suspect it related to NFSv4
      where a mount of "server:/some/path" require NFS to look up the root
      filehandle on the server, then walk down "/some" and "/path" to get
      the filehandle to mount.
      
      Whatever the reason, NFS depends on the s_anon list and on
      shrink_dcache_for_umount() pruning all dentries on this list.  So we
      cannot simply remove s_anon.
      
      We could just leave the code unchanged, but apart from that being
      potentially confusing, the (unfair) bit-spin-lock which protects
      s_anon can become a bottle neck when lots of disconnected dentries are
      being created.
      
      So this patch renames s_anon to s_roots, and stops storing
      disconnected dentries on the list.  Only dentries obtained with
      d_obtain_root() are now stored on this list.  There are many fewer of
      these (only NFS and NILFS2 use the call, and only during filesystem
      mount) so contention on the bit-lock will not be a problem.
      
      Possibly an alternate solution should be found for NFS and NILFS2, but
      that would require understanding their needs first.
      Signed-off-by: NNeilBrown <neilb@suse.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      f1ee6162
  8. 18 12月, 2017 1 次提交
    • A
      Add primitives for manipulating bitfields both in host- and fixed-endian. · 00b0c9b8
      Al Viro 提交于
      The following primitives are defined in linux/bitfield.h:
      
      * u32 le32_get_bits(__le32 val, u32 field) extracts the contents of the
        bitfield specified by @field in little-endian 32bit object @val and
        converts it to host-endian.
      
      * void le32p_replace_bits(__le32 *p, u32 v, u32 field) replaces
        the contents of the bitfield specified by @field in little-endian
        32bit object pointed to by @p with the value of @v.  New value is
        given in host-endian and stored as little-endian.
      
      * __le32 le32_replace_bits(__le32 old, u32 v, u32 field) is equivalent to
        ({__le32 tmp = old; le32p_replace_bits(&tmp, v, field); tmp;})
        In other words, instead of modifying an object in memory, it takes
        the initial value and returns the modified one.
      
      * __le32 le32_encode_bits(u32 v, u32 field) is equivalent to
        le32_replace_bits(0, v, field).  In other words, it returns a little-endian
        32bit object with the bitfield specified by @field containing the
        value of @v and all bits outside that bitfield being zero.
      
      Such set of helpers is defined for each of little-, big- and host-endian
      types; e.g. u64_get_bits(val, field) will return the contents of the bitfield
      specified by @field in host-endian 64bit object @val, etc.  Of course, for
      host-endian no conversion is involved.
      
      Fields to access are specified as GENMASK() values - an N-bit field
      starting at bit #M is encoded as GENMASK(M + N - 1, M).  Note that
      bit numbers refer to endianness of the object we are working with -
      e.g. GENMASK(11, 0) in __be16 refers to the second byte and the lower
      4 bits of the first byte.  In __le16 it would refer to the first byte
      and the lower 4 bits of the second byte, etc.
      
      Field specification must be a constant; __builtin_constant_p() doesn't
      have to be true for it, but compiler must be able to evaluate it at
      build time.  If it cannot or if the value does not encode any bitfield,
      the build will fail.
      
      If the value being stored in a bitfield is a constant that does not fit
      into that bitfield, a warning will be generated at compile time.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      00b0c9b8
  9. 11 12月, 2017 1 次提交
  10. 08 12月, 2017 1 次提交
  11. 05 12月, 2017 1 次提交
  12. 27 11月, 2017 8 次提交
    • L
      Linux 4.15-rc1 · 4fbd8d19
      Linus Torvalds 提交于
      4fbd8d19
    • L
      Merge branch 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm · bbecb1cf
      Linus Torvalds 提交于
      Pull ARM fixes from Russell King:
      
       - LPAE fixes for kernel-readonly regions
      
       - Fix for get_user_pages_fast on LPAE systems
      
       - avoid tying decompressor to a particular platform if DEBUG_LL is
         enabled
      
       - BUG if we attempt to return to userspace but the to-be-restored PSR
         value keeps us in privileged mode (defeating an issue that ftracetest
         found)
      
      * 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm:
        ARM: BUG if jumping to usermode address in kernel mode
        ARM: 8722/1: mm: make STRICT_KERNEL_RWX effective for LPAE
        ARM: 8721/1: mm: dump: check hardware RO bit for LPAE
        ARM: make decompressor debug output user selectable
        ARM: fix get_user_pages_fast
      bbecb1cf
    • L
      Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · dec0029a
      Linus Torvalds 提交于
      Pull irq fixes from Thomas Glexiner:
      
       - unbreak the irq trigger type check for legacy platforms
      
       - a handful fixes for ARM GIC v3/4 interrupt controllers
      
       - a few trivial fixes all over the place
      
      * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        genirq/matrix: Make - vs ?: Precedence explicit
        irqchip/imgpdc: Use resource_size function on resource object
        irqchip/qcom: Fix u32 comparison with value less than zero
        irqchip/exiu: Fix return value check in exiu_init()
        irqchip/gic-v3-its: Remove artificial dependency on PCI
        irqchip/gic-v4: Add forward definition of struct irq_domain_ops
        irqchip/gic-v3: pr_err() strings should end with newlines
        irqchip/s3c24xx: pr_err() strings should end with newlines
        irqchip/gic-v3: Fix ppi-partitions lookup
        irqchip/gic-v4: Clear IRQ_DISABLE_UNLAZY again if mapping fails
        genirq: Track whether the trigger type has been set
      dec0029a
    • L
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 02fc87b1
      Linus Torvalds 提交于
      Pull misc x86 fixes from Ingo Molnar:
       - topology enumeration fixes
       - KASAN fix
       - two entry fixes (not yet the big series related to KASLR)
       - remove obsolete code
       - instruction decoder fix
       - better /dev/mem sanity checks, hopefully working better this time
       - pkeys fixes
       - two ACPI fixes
       - 5-level paging related fixes
       - UMIP fixes that should make application visible faults more debuggable
       - boot fix for weird virtualization environment
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
        x86/decoder: Add new TEST instruction pattern
        x86/PCI: Remove unused HyperTransport interrupt support
        x86/umip: Fix insn_get_code_seg_params()'s return value
        x86/boot/KASLR: Remove unused variable
        x86/entry/64: Add missing irqflags tracing to native_load_gs_index()
        x86/mm/kasan: Don't use vmemmap_populate() to initialize shadow
        x86/entry/64: Fix entry_SYSCALL_64_after_hwframe() IRQ tracing
        x86/pkeys/selftests: Fix protection keys write() warning
        x86/pkeys/selftests: Rename 'si_pkey' to 'siginfo_pkey'
        x86/mpx/selftests: Fix up weird arrays
        x86/pkeys: Update documentation about availability
        x86/umip: Print a warning into the syslog if UMIP-protected instructions are used
        x86/smpboot: Fix __max_logical_packages estimate
        x86/topology: Avoid wasting 128k for package id array
        perf/x86/intel/uncore: Cache logical pkg id in uncore driver
        x86/acpi: Reduce code duplication in mp_override_legacy_irq()
        x86/acpi: Handle SCI interrupts above legacy space gracefully
        x86/boot: Fix boot failure when SMP MP-table is based at 0
        x86/mm: Limit mmap() of /dev/mem to valid physical addresses
        x86/selftests: Add test for mapping placement for 5-level paging
        ...
      02fc87b1
    • L
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6830c8db
      Linus Torvalds 提交于
      Pull scheduler fixes from Ingo Molnar:
       "Misc fixes: a documentation fix, a Sparse warning fix and a debugging
        fix"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/debug: Fix task state recording/printout
        sched/deadline: Don't use dubious signed bitfields
        sched/deadline: Fix the description of runtime accounting in the documentation
      6830c8db
    • L
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 580e3d55
      Linus Torvalds 提交于
      Pull perf fixes from Ingo Molnar:
       "Misc fixes: two PMU driver fixes and a memory leak fix"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/core: Fix memory leak triggered by perf --namespace
        perf/x86/intel/uncore: Add event constraint for BDX PCU
        perf/x86/intel: Hide TSX events when RTM is not supported
      580e3d55
    • L
      Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · cd4b5d5d
      Linus Torvalds 提交于
      Pull static key fix from Ingo Molnar:
       "Fix a boot warning related to bad init ordering of the static keys
        self-test"
      
      * 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        jump_label: Invoke jump_label_test() via early_initcall()
      cd4b5d5d
    • L
      Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · fcbc38b1
      Linus Torvalds 提交于
      Pull objtool fixes from Ingo Molnar:
       "A handful of objtool fixes, most of them related to making the UAPI
        header-syncing warnings easier to read and easier to act upon"
      
      * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        tools/headers: Sync objtool UAPI header
        objtool: Fix cross-build
        objtool: Move kernel headers/code sync check to a script
        objtool: Move synced files to their original relative locations
        objtool: Make unreachable annotation inline asms explicitly volatile
        objtool: Add a comment for the unreachable annotation macros
      fcbc38b1
  13. 26 11月, 2017 5 次提交
    • R
      ARM: BUG if jumping to usermode address in kernel mode · 8bafae20
      Russell King 提交于
      Detect if we are returning to usermode via the normal kernel exit paths
      but the saved PSR value indicates that we are in kernel mode.  This
      could occur due to corrupted stack state, which has been observed with
      "ftracetest".
      
      This ensures that we catch the problem case before we get to user code.
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      8bafae20
    • L
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 844056fd
      Linus Torvalds 提交于
      Pull timer updates from Thomas Gleixner:
      
       - The final conversion of timer wheel timers to timer_setup().
      
         A few manual conversions and a large coccinelle assisted sweep and
         the removal of the old initialization mechanisms and the related
         code.
      
       - Remove the now unused VSYSCALL update code
      
       - Fix permissions of /proc/timer_list. I still need to get rid of that
         file completely
      
       - Rename a misnomed clocksource function and remove a stale declaration
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)
        m68k/macboing: Fix missed timer callback assignment
        treewide: Remove TIMER_FUNC_TYPE and TIMER_DATA_TYPE casts
        timer: Remove redundant __setup_timer*() macros
        timer: Pass function down to initialization routines
        timer: Remove unused data arguments from macros
        timer: Switch callback prototype to take struct timer_list * argument
        timer: Pass timer_list pointer to callbacks unconditionally
        Coccinelle: Remove setup_timer.cocci
        timer: Remove setup_*timer() interface
        timer: Remove init_timer() interface
        treewide: setup_timer() -> timer_setup() (2 field)
        treewide: setup_timer() -> timer_setup()
        treewide: init_timer() -> setup_timer()
        treewide: Switch DEFINE_TIMER callbacks to struct timer_list *
        s390: cmm: Convert timers to use timer_setup()
        lightnvm: Convert timers to use timer_setup()
        drivers/net: cris: Convert timers to use timer_setup()
        drm/vc4: Convert timers to use timer_setup()
        block/laptop_mode: Convert timers to use timer_setup()
        net/atm/mpc: Avoid open-coded assignment of timer callback function
        ...
      844056fd
    • L
      Merge tag 'arc-4.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc · ca122fe3
      Linus Torvalds 提交于
      Pull ARC updates from Vineet Gupta:
      
       - more changes for HS48 cores: supporting MMUv5, detecting new
         micro-arch gizmos
      
       - axs10x platform wiring up reset driver merged in this cycle
      
       - ARC perf driver optimizations
      
      * tag 'arc-4.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
        ARC: perf: avoid vmalloc backed mmap
        ARCv2: perf: optimize given that num counters <= 32
        ARCv2: perf: tweak overflow interrupt
        ARC: [plat-axs10x] DTS: Add reset controller node to manage ethernet reset
        ARCv2: boot log: updates for HS48: dual-issue, ECC, Loop Buffer
        ARCv2: Accomodate HS48 MMUv5 by relaxing MMU ver checking
        ARC: [plat-axs10x] auto-select AXS101 or AXS103 given the  ISA config
      ca122fe3
    • L
      Merge tag 'kbuild-v4.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild · 5e2fda47
      Linus Torvalds 提交于
      Pull more Kbuild updates from Masahiro Yamada:
      
       - use 'pwd' instead of '/bin/pwd' for portability
      
       - clean up Makefiles
      
       - fix ld-option for clang
      
       - fix malloc'ed data size in Kconfig
      
       - fix parallel building along with coccicheck
      
       - fix a minor issue of package building
      
       - prompt to use "rpm-pkg" instead of "rpm"
      
       - clean up *.i and *.lst patterns by "make clean"
      
      * tag 'kbuild-v4.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
        kbuild: drop $(extra-y) from real-objs-y
        kbuild: clean up *.i and *.lst patterns by make clean
        kbuild: rpm: prompt to use "rpm-pkg" if "rpm" target is used
        kbuild: pkg: use --transform option to prefix paths in tar
        coccinelle: fix parallel build with CHECK=scripts/coccicheck
        kconfig/symbol.c: use correct pointer type argument for sizeof
        kbuild: Set KBUILD_CFLAGS before incl. arch Makefile
        kbuild: remove all dummy assignments to obj-
        kbuild: create built-in.o automatically if parent directory wants it
        kbuild: /bin/pwd -> pwd
      5e2fda47
    • L
      Merge tag 'afs-fixes-20171124' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs · f61ec2c9
      Linus Torvalds 提交于
      Pull AFS fixes from David Howells:
      
       - Make AFS file locking work again.
      
       - Don't write to a page that's being written out, but wait for it to
         complete.
      
       - Do d_drop() and d_add() in the right places.
      
       - Put keys on error paths.
      
       - Remove some redundant code.
      
      * tag 'afs-fixes-20171124' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
        afs: remove redundant assignment of dvnode to itself
        afs: cell: Remove unnecessary code in afs_lookup_cell
        afs: Fix signal handling in some file ops
        afs: Fix some dentry handling in dir ops and missing key_puts
        afs: Make afs_write_begin() avoid writing to a page that's being stored
        afs: Fix file locking
      f61ec2c9
  14. 25 11月, 2017 3 次提交
    • L
      Merge tag 'kvm-4.15-2' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 7753ea09
      Linus Torvalds 提交于
      Pull KVM updates from Radim Krčmář:
       "Trimmed second batch of KVM changes for Linux 4.15:
      
         - GICv4 Support for KVM/ARM
      
         - re-introduce support for CPUs without virtual NMI (cc stable) and
           allow testing of KVM without virtual NMI on available CPUs
      
         - fix long-standing performance issues with assigned devices on AMD
           (cc stable)"
      
      * tag 'kvm-4.15-2' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (30 commits)
        kvm: vmx: Allow disabling virtual NMI support
        kvm: vmx: Reinstate support for CPUs without virtual NMI
        KVM: SVM: obey guest PAT
        KVM: arm/arm64: Don't queue VLPIs on INV/INVALL
        KVM: arm/arm64: Fix GICv4 ITS initialization issues
        KVM: arm/arm64: GICv4: Theory of operations
        KVM: arm/arm64: GICv4: Enable VLPI support
        KVM: arm/arm64: GICv4: Prevent userspace from changing doorbell affinity
        KVM: arm/arm64: GICv4: Prevent a VM using GICv4 from being saved
        KVM: arm/arm64: GICv4: Enable virtual cpuif if VLPIs can be delivered
        KVM: arm/arm64: GICv4: Hook vPE scheduling into vgic flush/sync
        KVM: arm/arm64: GICv4: Use the doorbell interrupt as an unblocking source
        KVM: arm/arm64: GICv4: Add doorbell interrupt handling
        KVM: arm/arm64: GICv4: Use pending_last as a scheduling hint
        KVM: arm/arm64: GICv4: Handle INVALL applied to a vPE
        KVM: arm/arm64: GICv4: Propagate property updates to VLPIs
        KVM: arm/arm64: GICv4: Handle MOVALL applied to a vPE
        KVM: arm/arm64: GICv4: Handle CLEAR applied to a VLPI
        KVM: arm/arm64: GICv4: Propagate affinity changes to the physical ITS
        KVM: arm/arm64: GICv4: Unmap VLPI when freeing an LPI
        ...
      7753ea09
    • L
      Merge tag 'powerpc-4.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 83ada031
      Linus Torvalds 提交于
      Pull powerpc fixes from Michael Ellerman:
       "A small batch of fixes, about 50% tagged for stable and the rest for
        recently merged code.
      
        There's one more fix for the >128T handling on hash. Once a process
        had requested a single mmap above 128T we would then always search
        above 128T. The correct behaviour is to consider the hint address in
        isolation for each mmap request.
      
        Then a couple of fixes for the IMC PMU, a missing EXPORT_SYMBOL in
        VAS, a fix for STRICT_KERNEL_RWX on 32-bit, and a fix to correctly
        identify P9 DD2.1 but in code that is currently not used by default.
      
        Thanks to: Aneesh Kumar K.V, Christophe Leroy, Madhavan Srinivasan,
        Sukadev Bhattiprolu"
      
      * tag 'powerpc-4.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/64s: Fix Power9 DD2.1 logic in DT CPU features
        powerpc/perf: Fix IMC_MAX_PMU macro
        powerpc/perf: Fix pmu_count to count only nest imc pmus
        powerpc: Fix boot on BOOK3S_32 with CONFIG_STRICT_KERNEL_RWX
        powerpc/perf/imc: Use cpu_to_node() not topology_physical_package_id()
        powerpc/vas: Export chip_to_vas_id()
        powerpc/64s/slice: Use addr limit when computing slice mask
      83ada031
    • L
      Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · eda5d471
      Linus Torvalds 提交于
      Pull SCSI target updates from Nicholas Bellinger:
      
       "This series is predominantly bug-fixes, with a few small improvements
        that have been outstanding over the last release cycle.
      
        As usual, the associated bug-fixes have CC' tags for stable.
      
        Also, things have been particularly quiet wrt new developments the
        last months, with most folks continuing to focus on stability atop 4.x
        stable kernels for their respective production configurations.
      
        Also at this point, the stable trees have been synced up with
        mainline. This will continue to be a priority, as production users
        tend to run exclusively atop stable kernels, a few releases behind
        mainline.
      
        The highlights include:
      
         - Fix PR PREEMPT_AND_ABORT null pointer dereference regression in
           v4.11+ (tangwenji)
      
         - Fix OOPs during removing TCMU device (Xiubo Li + Zhang Zhuoyu)
      
         - Add netlink command reply supported option for each device (Kenjiro
           Nakayama)
      
         - cxgbit: Abort the TCP connection in case of data out timeout (Varun
           Prakash)
      
         - Fix PR/ALUA file path truncation (David Disseldorp)
      
         - Fix double se_cmd completion during ->cmd_time_out (Mike Christie)
      
         - Fix QUEUE_FULL + SCSI task attribute handling in 4.1+ (Bryant Ly +
           nab)
      
         - Fix quiese during transport_write_pending_qf endless loop (nab)
      
         - Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK in 3.14+
           (Don White + nab)"
      
      * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (35 commits)
        tcmu: Add a missing unlock on an error path
        tcmu: Fix some memory corruption
        iscsi-target: Fix non-immediate TMR reference leak
        iscsi-target: Make TASK_REASSIGN use proper se_cmd->cmd_kref
        target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK
        target: Fix quiese during transport_write_pending_qf endless loop
        target: Fix caw_sem leak in transport_generic_request_failure
        target: Fix QUEUE_FULL + SCSI task attribute handling
        iSCSI-target: Use common error handling code in iscsi_decode_text_input()
        target/iscsi: Detect conn_cmd_list corruption early
        target/iscsi: Fix a race condition in iscsit_add_reject_from_cmd()
        target/iscsi: Modify iscsit_do_crypto_hash_buf() prototype
        target/iscsi: Fix endianness in an error message
        target/iscsi: Use min() in iscsit_dump_data_payload() instead of open-coding it
        target/iscsi: Define OFFLOAD_BUF_SIZE once
        target: Inline transport_put_cmd()
        target: Suppress gcc 7 fallthrough warnings
        target: Move a declaration of a global variable into a header file
        tcmu: fix double se_cmd completion
        target: return SAM_STAT_TASK_SET_FULL for TCM_OUT_OF_RESOURCES
        ...
      eda5d471
  15. 24 11月, 2017 5 次提交