mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 22:14:04 +02:00
Merge a74e6a014c ("Merge tag 's390-5.12-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux") into android-mainline
Steps on the way to 5.12-rc3 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: Ia19db32fd64e84996f29b2d8aa409749c4514541
This commit is contained in:
commit
2866a74576
|
|
@ -275,9 +275,9 @@ CONFIG_IP_VS_DH=m
|
|||
CONFIG_IP_VS_SH=m
|
||||
CONFIG_IP_VS_SED=m
|
||||
CONFIG_IP_VS_NQ=m
|
||||
CONFIG_IP_VS_TWOS=m
|
||||
CONFIG_IP_VS_FTP=m
|
||||
CONFIG_IP_VS_PE_SIP=m
|
||||
CONFIG_NF_TABLES_IPV4=y
|
||||
CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
|
|
@ -298,7 +298,6 @@ CONFIG_IP_NF_SECURITY=m
|
|||
CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NF_TABLES_IPV6=y
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
CONFIG_IP6_NF_MATCH_AH=m
|
||||
|
|
@ -481,7 +480,6 @@ CONFIG_NLMON=m
|
|||
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||
# CONFIG_NET_VENDOR_ARC is not set
|
||||
# CONFIG_NET_VENDOR_ATHEROS is not set
|
||||
# CONFIG_NET_VENDOR_AURORA is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_NET_VENDOR_BROCADE is not set
|
||||
# CONFIG_NET_VENDOR_CADENCE is not set
|
||||
|
|
@ -581,7 +579,6 @@ CONFIG_VIRTIO_BALLOON=m
|
|||
CONFIG_VIRTIO_INPUT=y
|
||||
CONFIG_VHOST_NET=m
|
||||
CONFIG_VHOST_VSOCK=m
|
||||
# CONFIG_SURFACE_PLATFORMS is not set
|
||||
CONFIG_S390_CCW_IOMMU=y
|
||||
CONFIG_S390_AP_IOMMU=y
|
||||
CONFIG_EXT4_FS=y
|
||||
|
|
@ -635,6 +632,7 @@ CONFIG_NTFS_RW=y
|
|||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_TMPFS_INODE64=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_CONFIGFS_FS=m
|
||||
CONFIG_ECRYPT_FS=m
|
||||
|
|
@ -714,12 +712,8 @@ CONFIG_CRYPTO_VMAC=m
|
|||
CONFIG_CRYPTO_CRC32=m
|
||||
CONFIG_CRYPTO_BLAKE2S=m
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_RMD128=m
|
||||
CONFIG_CRYPTO_RMD160=m
|
||||
CONFIG_CRYPTO_RMD256=m
|
||||
CONFIG_CRYPTO_RMD320=m
|
||||
CONFIG_CRYPTO_SHA3=m
|
||||
CONFIG_CRYPTO_TGR192=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_AES_TI=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
|
|
@ -731,7 +725,6 @@ CONFIG_CRYPTO_CAST6=m
|
|||
CONFIG_CRYPTO_DES=m
|
||||
CONFIG_CRYPTO_FCRYPT=m
|
||||
CONFIG_CRYPTO_KHAZAD=m
|
||||
CONFIG_CRYPTO_SALSA20=m
|
||||
CONFIG_CRYPTO_SEED=m
|
||||
CONFIG_CRYPTO_SERPENT=m
|
||||
CONFIG_CRYPTO_SM4=m
|
||||
|
|
@ -796,12 +789,9 @@ CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
|||
CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
|
||||
CONFIG_SLUB_DEBUG_ON=y
|
||||
CONFIG_SLUB_STATS=y
|
||||
CONFIG_DEBUG_KMEMLEAK=y
|
||||
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
CONFIG_DEBUG_VM=y
|
||||
CONFIG_DEBUG_VM_VMACACHE=y
|
||||
CONFIG_DEBUG_VM_RB=y
|
||||
CONFIG_DEBUG_VM_PGFLAGS=y
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m
|
||||
|
|
@ -838,6 +828,7 @@ CONFIG_BPF_KPROBE_OVERRIDE=y
|
|||
CONFIG_HIST_TRIGGERS=y
|
||||
CONFIG_FTRACE_STARTUP_TEST=y
|
||||
# CONFIG_EVENT_TRACE_STARTUP_TEST is not set
|
||||
CONFIG_DEBUG_ENTRY=y
|
||||
CONFIG_NOTIFIER_ERROR_INJECTION=m
|
||||
CONFIG_NETDEV_NOTIFIER_ERROR_INJECT=m
|
||||
CONFIG_FAULT_INJECTION=y
|
||||
|
|
@ -861,4 +852,3 @@ CONFIG_PERCPU_TEST=m
|
|||
CONFIG_ATOMIC64_SELFTEST=y
|
||||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_DEBUG_ENTRY=y
|
||||
|
|
|
|||
|
|
@ -266,9 +266,9 @@ CONFIG_IP_VS_DH=m
|
|||
CONFIG_IP_VS_SH=m
|
||||
CONFIG_IP_VS_SED=m
|
||||
CONFIG_IP_VS_NQ=m
|
||||
CONFIG_IP_VS_TWOS=m
|
||||
CONFIG_IP_VS_FTP=m
|
||||
CONFIG_IP_VS_PE_SIP=m
|
||||
CONFIG_NF_TABLES_IPV4=y
|
||||
CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
|
|
@ -289,7 +289,6 @@ CONFIG_IP_NF_SECURITY=m
|
|||
CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NF_TABLES_IPV6=y
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
CONFIG_IP6_NF_MATCH_AH=m
|
||||
|
|
@ -473,7 +472,6 @@ CONFIG_NLMON=m
|
|||
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||
# CONFIG_NET_VENDOR_ARC is not set
|
||||
# CONFIG_NET_VENDOR_ATHEROS is not set
|
||||
# CONFIG_NET_VENDOR_AURORA is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_NET_VENDOR_BROCADE is not set
|
||||
# CONFIG_NET_VENDOR_CADENCE is not set
|
||||
|
|
@ -573,7 +571,6 @@ CONFIG_VIRTIO_BALLOON=m
|
|||
CONFIG_VIRTIO_INPUT=y
|
||||
CONFIG_VHOST_NET=m
|
||||
CONFIG_VHOST_VSOCK=m
|
||||
# CONFIG_SURFACE_PLATFORMS is not set
|
||||
CONFIG_S390_CCW_IOMMU=y
|
||||
CONFIG_S390_AP_IOMMU=y
|
||||
CONFIG_EXT4_FS=y
|
||||
|
|
@ -623,6 +620,7 @@ CONFIG_NTFS_RW=y
|
|||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_TMPFS_INODE64=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_CONFIGFS_FS=m
|
||||
CONFIG_ECRYPT_FS=m
|
||||
|
|
@ -703,12 +701,8 @@ CONFIG_CRYPTO_VMAC=m
|
|||
CONFIG_CRYPTO_CRC32=m
|
||||
CONFIG_CRYPTO_BLAKE2S=m
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_RMD128=m
|
||||
CONFIG_CRYPTO_RMD160=m
|
||||
CONFIG_CRYPTO_RMD256=m
|
||||
CONFIG_CRYPTO_RMD320=m
|
||||
CONFIG_CRYPTO_SHA3=m
|
||||
CONFIG_CRYPTO_TGR192=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_AES_TI=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
|
|
@ -720,7 +714,6 @@ CONFIG_CRYPTO_CAST6=m
|
|||
CONFIG_CRYPTO_DES=m
|
||||
CONFIG_CRYPTO_FCRYPT=m
|
||||
CONFIG_CRYPTO_KHAZAD=m
|
||||
CONFIG_CRYPTO_SALSA20=m
|
||||
CONFIG_CRYPTO_SEED=m
|
||||
CONFIG_CRYPTO_SERPENT=m
|
||||
CONFIG_CRYPTO_SM4=m
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@ CONFIG_CRASH_DUMP=y
|
|||
# CONFIG_SECCOMP is not set
|
||||
# CONFIG_GCC_PLUGINS is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_IBM_PARTITION=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_COMPACTION is not set
|
||||
# CONFIG_MIGRATION is not set
|
||||
|
|
@ -61,11 +60,9 @@ CONFIG_RAW_DRIVER=y
|
|||
# CONFIG_HID is not set
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_VHOST_MENU is not set
|
||||
# CONFIG_SURFACE_PLATFORMS is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_INOTIFY_USER is not set
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
# CONFIG_MISC_FILESYSTEMS is not set
|
||||
# CONFIG_NETWORK_FILESYSTEMS is not set
|
||||
CONFIG_LSM="yama,loadpin,safesetid,integrity"
|
||||
|
|
|
|||
|
|
@ -14,12 +14,12 @@
|
|||
|
||||
struct s390_idle_data {
|
||||
seqcount_t seqcount;
|
||||
unsigned long long idle_count;
|
||||
unsigned long long idle_time;
|
||||
unsigned long long clock_idle_enter;
|
||||
unsigned long long clock_idle_exit;
|
||||
unsigned long long timer_idle_enter;
|
||||
unsigned long long timer_idle_exit;
|
||||
unsigned long idle_count;
|
||||
unsigned long idle_time;
|
||||
unsigned long clock_idle_enter;
|
||||
unsigned long clock_idle_exit;
|
||||
unsigned long timer_idle_enter;
|
||||
unsigned long timer_idle_exit;
|
||||
unsigned long mt_cycles_enter[8];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -98,10 +98,10 @@ extern unsigned char ptff_function_mask[16];
|
|||
|
||||
/* Query TOD offset result */
|
||||
struct ptff_qto {
|
||||
unsigned long long physical_clock;
|
||||
unsigned long long tod_offset;
|
||||
unsigned long long logical_tod_offset;
|
||||
unsigned long long tod_epoch_difference;
|
||||
unsigned long physical_clock;
|
||||
unsigned long tod_offset;
|
||||
unsigned long logical_tod_offset;
|
||||
unsigned long tod_epoch_difference;
|
||||
} __packed;
|
||||
|
||||
static inline int ptff_query(unsigned int nr)
|
||||
|
|
@ -151,9 +151,9 @@ struct ptff_qui {
|
|||
rc; \
|
||||
})
|
||||
|
||||
static inline unsigned long long local_tick_disable(void)
|
||||
static inline unsigned long local_tick_disable(void)
|
||||
{
|
||||
unsigned long long old;
|
||||
unsigned long old;
|
||||
|
||||
old = S390_lowcore.clock_comparator;
|
||||
S390_lowcore.clock_comparator = clock_comparator_max;
|
||||
|
|
@ -161,7 +161,7 @@ static inline unsigned long long local_tick_disable(void)
|
|||
return old;
|
||||
}
|
||||
|
||||
static inline void local_tick_enable(unsigned long long comp)
|
||||
static inline void local_tick_enable(unsigned long comp)
|
||||
{
|
||||
S390_lowcore.clock_comparator = comp;
|
||||
set_clock_comparator(S390_lowcore.clock_comparator);
|
||||
|
|
@ -169,9 +169,9 @@ static inline void local_tick_enable(unsigned long long comp)
|
|||
|
||||
#define CLOCK_TICK_RATE 1193180 /* Underlying HZ */
|
||||
|
||||
typedef unsigned long long cycles_t;
|
||||
typedef unsigned long cycles_t;
|
||||
|
||||
static inline unsigned long long get_tod_clock(void)
|
||||
static inline unsigned long get_tod_clock(void)
|
||||
{
|
||||
union tod_clock clk;
|
||||
|
||||
|
|
@ -179,10 +179,10 @@ static inline unsigned long long get_tod_clock(void)
|
|||
return clk.tod;
|
||||
}
|
||||
|
||||
static inline unsigned long long get_tod_clock_fast(void)
|
||||
static inline unsigned long get_tod_clock_fast(void)
|
||||
{
|
||||
#ifdef CONFIG_HAVE_MARCH_Z9_109_FEATURES
|
||||
unsigned long long clk;
|
||||
unsigned long clk;
|
||||
|
||||
asm volatile("stckf %0" : "=Q" (clk) : : "cc");
|
||||
return clk;
|
||||
|
|
@ -208,9 +208,9 @@ extern union tod_clock tod_clock_base;
|
|||
* Therefore preemption must be disabled, otherwise the returned
|
||||
* value is not guaranteed to be monotonic.
|
||||
*/
|
||||
static inline unsigned long long get_tod_clock_monotonic(void)
|
||||
static inline unsigned long get_tod_clock_monotonic(void)
|
||||
{
|
||||
unsigned long long tod;
|
||||
unsigned long tod;
|
||||
|
||||
preempt_disable_notrace();
|
||||
tod = get_tod_clock() - tod_clock_base.tod;
|
||||
|
|
@ -237,7 +237,7 @@ static inline unsigned long long get_tod_clock_monotonic(void)
|
|||
* -> ns = (th * 125) + ((tl * 125) >> 9);
|
||||
*
|
||||
*/
|
||||
static inline unsigned long long tod_to_ns(unsigned long long todval)
|
||||
static inline unsigned long tod_to_ns(unsigned long todval)
|
||||
{
|
||||
return ((todval >> 9) * 125) + (((todval & 0x1ff) * 125) >> 9);
|
||||
}
|
||||
|
|
@ -249,10 +249,10 @@ static inline unsigned long long tod_to_ns(unsigned long long todval)
|
|||
*
|
||||
* Returns: true if a is later than b
|
||||
*/
|
||||
static inline int tod_after(unsigned long long a, unsigned long long b)
|
||||
static inline int tod_after(unsigned long a, unsigned long b)
|
||||
{
|
||||
if (MACHINE_HAS_SCC)
|
||||
return (long long) a > (long long) b;
|
||||
return (long) a > (long) b;
|
||||
return a > b;
|
||||
}
|
||||
|
||||
|
|
@ -263,10 +263,10 @@ static inline int tod_after(unsigned long long a, unsigned long long b)
|
|||
*
|
||||
* Returns: true if a is later than b
|
||||
*/
|
||||
static inline int tod_after_eq(unsigned long long a, unsigned long long b)
|
||||
static inline int tod_after_eq(unsigned long a, unsigned long b)
|
||||
{
|
||||
if (MACHINE_HAS_SCC)
|
||||
return (long long) a >= (long long) b;
|
||||
return (long) a >= (long) b;
|
||||
return a >= b;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ void account_idle_time_irq(void)
|
|||
void arch_cpu_idle(void)
|
||||
{
|
||||
struct s390_idle_data *idle = this_cpu_ptr(&s390_idle);
|
||||
unsigned long long idle_time;
|
||||
unsigned long idle_time;
|
||||
unsigned long psw_mask;
|
||||
|
||||
/* Wait for external, I/O or machine check interrupt. */
|
||||
|
|
@ -73,7 +73,7 @@ static ssize_t show_idle_count(struct device *dev,
|
|||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct s390_idle_data *idle = &per_cpu(s390_idle, dev->id);
|
||||
unsigned long long idle_count;
|
||||
unsigned long idle_count;
|
||||
unsigned int seq;
|
||||
|
||||
do {
|
||||
|
|
@ -82,14 +82,14 @@ static ssize_t show_idle_count(struct device *dev,
|
|||
if (READ_ONCE(idle->clock_idle_enter))
|
||||
idle_count++;
|
||||
} while (read_seqcount_retry(&idle->seqcount, seq));
|
||||
return sprintf(buf, "%llu\n", idle_count);
|
||||
return sprintf(buf, "%lu\n", idle_count);
|
||||
}
|
||||
DEVICE_ATTR(idle_count, 0444, show_idle_count, NULL);
|
||||
|
||||
static ssize_t show_idle_time(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
unsigned long long now, idle_time, idle_enter, idle_exit, in_idle;
|
||||
unsigned long now, idle_time, idle_enter, idle_exit, in_idle;
|
||||
struct s390_idle_data *idle = &per_cpu(s390_idle, dev->id);
|
||||
unsigned int seq;
|
||||
|
||||
|
|
@ -109,14 +109,14 @@ static ssize_t show_idle_time(struct device *dev,
|
|||
}
|
||||
}
|
||||
idle_time += in_idle;
|
||||
return sprintf(buf, "%llu\n", idle_time >> 12);
|
||||
return sprintf(buf, "%lu\n", idle_time >> 12);
|
||||
}
|
||||
DEVICE_ATTR(idle_time_us, 0444, show_idle_time, NULL);
|
||||
|
||||
u64 arch_cpu_idle_time(int cpu)
|
||||
{
|
||||
struct s390_idle_data *idle = &per_cpu(s390_idle, cpu);
|
||||
unsigned long long now, idle_enter, idle_exit, in_idle;
|
||||
unsigned long now, idle_enter, idle_exit, in_idle;
|
||||
unsigned int seq;
|
||||
|
||||
do {
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ static int __hw_perf_event_init(struct perf_event *event, unsigned int type)
|
|||
case CPUMF_CTR_SET_MAX:
|
||||
/* The counter could not be associated to a counter set */
|
||||
return -EINVAL;
|
||||
};
|
||||
}
|
||||
|
||||
/* Initialize for using the CPU-measurement counter facility */
|
||||
if (!atomic_inc_not_zero(&num_events)) {
|
||||
|
|
|
|||
|
|
@ -26,12 +26,10 @@
|
|||
#include <asm/timex.h>
|
||||
#include <asm/debug.h>
|
||||
|
||||
#include <asm/perf_cpum_cf_diag.h>
|
||||
#include <asm/hwctrset.h>
|
||||
|
||||
#define CF_DIAG_CTRSET_DEF 0xfeef /* Counter set header mark */
|
||||
#define CF_DIAG_MIN_INTERVAL 60 /* Minimum counter set read */
|
||||
/* interval in seconds */
|
||||
static unsigned long cf_diag_interval = CF_DIAG_MIN_INTERVAL;
|
||||
static unsigned int cf_diag_cpu_speed;
|
||||
static debug_info_t *cf_diag_dbg;
|
||||
|
||||
|
|
@ -729,7 +727,6 @@ static DEFINE_MUTEX(cf_diag_ctrset_mutex);
|
|||
static struct cf_diag_ctrset {
|
||||
unsigned long ctrset; /* Bit mask of counter set to read */
|
||||
cpumask_t mask; /* CPU mask to read from */
|
||||
time64_t lastread; /* Epoch counter set last read */
|
||||
} cf_diag_ctrset;
|
||||
|
||||
static void cf_diag_ctrset_clear(void)
|
||||
|
|
@ -866,27 +863,16 @@ static int cf_diag_all_read(unsigned long arg)
|
|||
{
|
||||
struct cf_diag_call_on_cpu_parm p;
|
||||
cpumask_var_t mask;
|
||||
time64_t now;
|
||||
int rc = 0;
|
||||
int rc;
|
||||
|
||||
debug_sprintf_event(cf_diag_dbg, 5, "%s\n", __func__);
|
||||
if (!alloc_cpumask_var(&mask, GFP_KERNEL))
|
||||
return -ENOMEM;
|
||||
now = ktime_get_seconds();
|
||||
if (cf_diag_ctrset.lastread + cf_diag_interval > now) {
|
||||
debug_sprintf_event(cf_diag_dbg, 5, "%s now %lld "
|
||||
" lastread %lld\n", __func__, now,
|
||||
cf_diag_ctrset.lastread);
|
||||
rc = -EAGAIN;
|
||||
goto out;
|
||||
} else {
|
||||
cf_diag_ctrset.lastread = now;
|
||||
}
|
||||
|
||||
p.sets = cf_diag_ctrset.ctrset;
|
||||
cpumask_and(mask, &cf_diag_ctrset.mask, cpu_online_mask);
|
||||
on_each_cpu_mask(mask, cf_diag_cpu_read, &p, 1);
|
||||
rc = cf_diag_all_copy(arg, mask);
|
||||
out:
|
||||
free_cpumask_var(mask);
|
||||
debug_sprintf_event(cf_diag_dbg, 5, "%s rc %d\n", __func__, rc);
|
||||
return rc;
|
||||
|
|
|
|||
|
|
@ -68,10 +68,10 @@ EXPORT_SYMBOL(s390_epoch_delta_notifier);
|
|||
|
||||
unsigned char ptff_function_mask[16];
|
||||
|
||||
static unsigned long long lpar_offset;
|
||||
static unsigned long long initial_leap_seconds;
|
||||
static unsigned long long tod_steering_end;
|
||||
static long long tod_steering_delta;
|
||||
static unsigned long lpar_offset;
|
||||
static unsigned long initial_leap_seconds;
|
||||
static unsigned long tod_steering_end;
|
||||
static long tod_steering_delta;
|
||||
|
||||
/*
|
||||
* Get time offsets with PTFF
|
||||
|
|
@ -96,7 +96,7 @@ void __init time_early_init(void)
|
|||
|
||||
/* get initial leap seconds */
|
||||
if (ptff_query(PTFF_QUI) && ptff(&qui, sizeof(qui), PTFF_QUI) == 0)
|
||||
initial_leap_seconds = (unsigned long long)
|
||||
initial_leap_seconds = (unsigned long)
|
||||
((long) qui.old_leap * 4096000000L);
|
||||
}
|
||||
|
||||
|
|
@ -222,7 +222,7 @@ void __init read_persistent_wall_and_boot_offset(struct timespec64 *wall_time,
|
|||
|
||||
static u64 read_tod_clock(struct clocksource *cs)
|
||||
{
|
||||
unsigned long long now, adj;
|
||||
unsigned long now, adj;
|
||||
|
||||
preempt_disable(); /* protect from changes to steering parameters */
|
||||
now = get_tod_clock();
|
||||
|
|
@ -362,7 +362,7 @@ static inline int check_sync_clock(void)
|
|||
* Apply clock delta to the global data structures.
|
||||
* This is called once on the CPU that performed the clock sync.
|
||||
*/
|
||||
static void clock_sync_global(unsigned long long delta)
|
||||
static void clock_sync_global(unsigned long delta)
|
||||
{
|
||||
unsigned long now, adj;
|
||||
struct ptff_qto qto;
|
||||
|
|
@ -378,7 +378,7 @@ static void clock_sync_global(unsigned long long delta)
|
|||
-(adj >> 15) : (adj >> 15);
|
||||
tod_steering_delta += delta;
|
||||
if ((abs(tod_steering_delta) >> 48) != 0)
|
||||
panic("TOD clock sync offset %lli is too large to drift\n",
|
||||
panic("TOD clock sync offset %li is too large to drift\n",
|
||||
tod_steering_delta);
|
||||
tod_steering_end = now + (abs(tod_steering_delta) << 15);
|
||||
vdso_data->arch_data.tod_steering_end = tod_steering_end;
|
||||
|
|
@ -394,7 +394,7 @@ static void clock_sync_global(unsigned long long delta)
|
|||
* Apply clock delta to the per-CPU data structures of this CPU.
|
||||
* This is called for each online CPU after the call to clock_sync_global.
|
||||
*/
|
||||
static void clock_sync_local(unsigned long long delta)
|
||||
static void clock_sync_local(unsigned long delta)
|
||||
{
|
||||
/* Add the delta to the clock comparator. */
|
||||
if (S390_lowcore.clock_comparator != clock_comparator_max) {
|
||||
|
|
@ -418,7 +418,7 @@ static void __init time_init_wq(void)
|
|||
struct clock_sync_data {
|
||||
atomic_t cpus;
|
||||
int in_sync;
|
||||
unsigned long long clock_delta;
|
||||
unsigned long clock_delta;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -538,7 +538,7 @@ static int stpinfo_valid(void)
|
|||
static int stp_sync_clock(void *data)
|
||||
{
|
||||
struct clock_sync_data *sync = data;
|
||||
unsigned long long clock_delta, flags;
|
||||
u64 clock_delta, flags;
|
||||
static int first;
|
||||
int rc;
|
||||
|
||||
|
|
@ -720,8 +720,8 @@ static ssize_t ctn_id_show(struct device *dev,
|
|||
|
||||
mutex_lock(&stp_mutex);
|
||||
if (stpinfo_valid())
|
||||
ret = sprintf(buf, "%016llx\n",
|
||||
*(unsigned long long *) stp_info.ctnid);
|
||||
ret = sprintf(buf, "%016lx\n",
|
||||
*(unsigned long *) stp_info.ctnid);
|
||||
mutex_unlock(&stp_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -794,7 +794,7 @@ static ssize_t leap_seconds_scheduled_show(struct device *dev,
|
|||
if (!stzi.lsoib.p)
|
||||
return sprintf(buf, "0,0\n");
|
||||
|
||||
return sprintf(buf, "%llu,%d\n",
|
||||
return sprintf(buf, "%lu,%d\n",
|
||||
tod_to_ns(stzi.lsoib.nlsout - TOD_UNIX_EPOCH) / NSEC_PER_SEC,
|
||||
stzi.lsoib.nlso - stzi.lsoib.also);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,8 +76,6 @@ static void cpu_group_map(cpumask_t *dst, struct mask_info *info, unsigned int c
|
|||
}
|
||||
info = info->next;
|
||||
}
|
||||
if (cpumask_empty(&mask))
|
||||
cpumask_copy(&mask, cpumask_of(cpu));
|
||||
break;
|
||||
case TOPOLOGY_MODE_PACKAGE:
|
||||
cpumask_copy(&mask, cpu_present_mask);
|
||||
|
|
|
|||
|
|
@ -1287,7 +1287,7 @@ static u64 __calculate_sltime(struct kvm_vcpu *vcpu)
|
|||
/* already expired? */
|
||||
if (cputm >> 63)
|
||||
return 0;
|
||||
return min(sltime, tod_to_ns(cputm));
|
||||
return min_t(u64, sltime, tod_to_ns(cputm));
|
||||
}
|
||||
} else if (cpu_timer_interrupts_enabled(vcpu)) {
|
||||
sltime = kvm_s390_get_cpu_timer(vcpu);
|
||||
|
|
|
|||
|
|
@ -424,8 +424,10 @@ tty3270_update(struct timer_list *t)
|
|||
* last output position matches the start address
|
||||
* of this line.
|
||||
*/
|
||||
if (s->string[1] == sba[0] && s->string[2] == sba[1])
|
||||
str += 3, len -= 3;
|
||||
if (s->string[1] == sba[0] && s->string[2] == sba[1]) {
|
||||
str += 3;
|
||||
len -= 3;
|
||||
}
|
||||
if (raw3270_request_add_data(wrq, str, len) != 0)
|
||||
break;
|
||||
list_del_init(&s->update);
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/reboot.h>
|
||||
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/ipl.h>
|
||||
|
|
@ -238,6 +239,28 @@ static int __init zcore_reipl_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int zcore_reboot_and_on_panic_handler(struct notifier_block *self,
|
||||
unsigned long event,
|
||||
void *data)
|
||||
{
|
||||
if (hsa_available)
|
||||
release_hsa();
|
||||
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
|
||||
static struct notifier_block zcore_reboot_notifier = {
|
||||
.notifier_call = zcore_reboot_and_on_panic_handler,
|
||||
/* we need to be notified before reipl and kdump */
|
||||
.priority = INT_MAX,
|
||||
};
|
||||
|
||||
static struct notifier_block zcore_on_panic_notifier = {
|
||||
.notifier_call = zcore_reboot_and_on_panic_handler,
|
||||
/* we need to be notified before reipl and kdump */
|
||||
.priority = INT_MAX,
|
||||
};
|
||||
|
||||
static int __init zcore_init(void)
|
||||
{
|
||||
unsigned char arch;
|
||||
|
|
@ -293,28 +316,15 @@ static int __init zcore_init(void)
|
|||
goto fail;
|
||||
|
||||
zcore_dir = debugfs_create_dir("zcore" , NULL);
|
||||
if (!zcore_dir) {
|
||||
rc = -ENOMEM;
|
||||
goto fail;
|
||||
}
|
||||
zcore_reipl_file = debugfs_create_file("reipl", S_IRUSR, zcore_dir,
|
||||
NULL, &zcore_reipl_fops);
|
||||
if (!zcore_reipl_file) {
|
||||
rc = -ENOMEM;
|
||||
goto fail_dir;
|
||||
}
|
||||
zcore_hsa_file = debugfs_create_file("hsa", S_IRUSR|S_IWUSR, zcore_dir,
|
||||
NULL, &zcore_hsa_fops);
|
||||
if (!zcore_hsa_file) {
|
||||
rc = -ENOMEM;
|
||||
goto fail_reipl_file;
|
||||
}
|
||||
return 0;
|
||||
|
||||
fail_reipl_file:
|
||||
debugfs_remove(zcore_reipl_file);
|
||||
fail_dir:
|
||||
debugfs_remove(zcore_dir);
|
||||
register_reboot_notifier(&zcore_reboot_notifier);
|
||||
atomic_notifier_chain_register(&panic_notifier_list, &zcore_on_panic_notifier);
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
diag308(DIAG308_REL_HSA, NULL);
|
||||
return rc;
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ static void ccw_timeout_log(struct ccw_device *cdev)
|
|||
orb = &private->orb;
|
||||
cc = stsch(sch->schid, &schib);
|
||||
|
||||
printk(KERN_WARNING "cio: ccw device timeout occurred at %llx, "
|
||||
printk(KERN_WARNING "cio: ccw device timeout occurred at %lx, "
|
||||
"device information:\n", get_tod_clock());
|
||||
printk(KERN_WARNING "cio: orb:\n");
|
||||
print_hex_dump(KERN_WARNING, "cio: ", DUMP_PREFIX_NONE, 16, 1,
|
||||
|
|
|
|||
|
|
@ -543,7 +543,7 @@ static ssize_t vfio_ccw_mdev_ioctl(struct mdev_device *mdev,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
return copy_to_user((void __user *)arg, &info, minsz);
|
||||
return copy_to_user((void __user *)arg, &info, minsz) ? -EFAULT : 0;
|
||||
}
|
||||
case VFIO_DEVICE_GET_REGION_INFO:
|
||||
{
|
||||
|
|
@ -561,7 +561,7 @@ static ssize_t vfio_ccw_mdev_ioctl(struct mdev_device *mdev,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
return copy_to_user((void __user *)arg, &info, minsz);
|
||||
return copy_to_user((void __user *)arg, &info, minsz) ? -EFAULT : 0;
|
||||
}
|
||||
case VFIO_DEVICE_GET_IRQ_INFO:
|
||||
{
|
||||
|
|
@ -582,7 +582,7 @@ static ssize_t vfio_ccw_mdev_ioctl(struct mdev_device *mdev,
|
|||
if (info.count == -1)
|
||||
return -EINVAL;
|
||||
|
||||
return copy_to_user((void __user *)arg, &info, minsz);
|
||||
return copy_to_user((void __user *)arg, &info, minsz) ? -EFAULT : 0;
|
||||
}
|
||||
case VFIO_DEVICE_SET_IRQS:
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1286,7 +1286,7 @@ static int vfio_ap_mdev_get_device_info(unsigned long arg)
|
|||
info.num_regions = 0;
|
||||
info.num_irqs = 0;
|
||||
|
||||
return copy_to_user((void __user *)arg, &info, minsz);
|
||||
return copy_to_user((void __user *)arg, &info, minsz) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
static ssize_t vfio_ap_mdev_ioctl(struct mdev_device *mdev,
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ config TMPFS_XATTR
|
|||
|
||||
config TMPFS_INODE64
|
||||
bool "Use 64-bit ino_t by default in tmpfs"
|
||||
depends on TMPFS && 64BIT && !(S390 || ALPHA)
|
||||
depends on TMPFS && 64BIT
|
||||
default n
|
||||
help
|
||||
tmpfs has historically used only inode numbers as wide as an unsigned
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@ static int cifs_debug_files_proc_show(struct seq_file *m, void *v)
|
|||
from_kuid(&init_user_ns, cfile->uid),
|
||||
cfile->dentry);
|
||||
#ifdef CONFIG_CIFS_DEBUG2
|
||||
seq_printf(m, " 0x%llx\n", cfile->fid.mid);
|
||||
seq_printf(m, " %llu\n", cfile->fid.mid);
|
||||
#else
|
||||
seq_printf(m, "\n");
|
||||
#endif /* CIFS_DEBUG2 */
|
||||
|
|
|
|||
|
|
@ -290,7 +290,7 @@ cifs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
|||
rc = server->ops->queryfs(xid, tcon, cifs_sb, buf);
|
||||
|
||||
free_xid(xid);
|
||||
return 0;
|
||||
return rc;
|
||||
}
|
||||
|
||||
static long cifs_fallocate(struct file *file, int mode, loff_t off, loff_t len)
|
||||
|
|
|
|||
|
|
@ -257,7 +257,7 @@ struct smb_version_operations {
|
|||
/* verify the message */
|
||||
int (*check_message)(char *, unsigned int, struct TCP_Server_Info *);
|
||||
bool (*is_oplock_break)(char *, struct TCP_Server_Info *);
|
||||
int (*handle_cancelled_mid)(char *, struct TCP_Server_Info *);
|
||||
int (*handle_cancelled_mid)(struct mid_q_entry *, struct TCP_Server_Info *);
|
||||
void (*downgrade_oplock)(struct TCP_Server_Info *server,
|
||||
struct cifsInodeInfo *cinode, __u32 oplock,
|
||||
unsigned int epoch, bool *purge_cache);
|
||||
|
|
@ -1705,16 +1705,17 @@ static inline bool is_retryable_error(int error)
|
|||
#define CIFS_NO_RSP_BUF 0x040 /* no response buffer required */
|
||||
|
||||
/* Type of request operation */
|
||||
#define CIFS_ECHO_OP 0x080 /* echo request */
|
||||
#define CIFS_OBREAK_OP 0x0100 /* oplock break request */
|
||||
#define CIFS_NEG_OP 0x0200 /* negotiate request */
|
||||
#define CIFS_ECHO_OP 0x080 /* echo request */
|
||||
#define CIFS_OBREAK_OP 0x0100 /* oplock break request */
|
||||
#define CIFS_NEG_OP 0x0200 /* negotiate request */
|
||||
#define CIFS_CP_CREATE_CLOSE_OP 0x0400 /* compound create+close request */
|
||||
/* Lower bitmask values are reserved by others below. */
|
||||
#define CIFS_SESS_OP 0x2000 /* session setup request */
|
||||
#define CIFS_OP_MASK 0x2380 /* mask request type */
|
||||
#define CIFS_SESS_OP 0x2000 /* session setup request */
|
||||
#define CIFS_OP_MASK 0x2780 /* mask request type */
|
||||
|
||||
#define CIFS_HAS_CREDITS 0x0400 /* already has credits */
|
||||
#define CIFS_TRANSFORM_REQ 0x0800 /* transform request before sending */
|
||||
#define CIFS_NO_SRV_RSP 0x1000 /* there is no server response */
|
||||
#define CIFS_HAS_CREDITS 0x0400 /* already has credits */
|
||||
#define CIFS_TRANSFORM_REQ 0x0800 /* transform request before sending */
|
||||
#define CIFS_NO_SRV_RSP 0x1000 /* there is no server response */
|
||||
|
||||
/* Security Flags: indicate type of session setup needed */
|
||||
#define CIFSSEC_MAY_SIGN 0x00001
|
||||
|
|
|
|||
|
|
@ -741,7 +741,7 @@ static void clean_demultiplex_info(struct TCP_Server_Info *server)
|
|||
spin_lock(&GlobalMid_Lock);
|
||||
list_for_each_safe(tmp, tmp2, &server->pending_mid_q) {
|
||||
mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
|
||||
cifs_dbg(FYI, "Clearing mid 0x%llx\n", mid_entry->mid);
|
||||
cifs_dbg(FYI, "Clearing mid %llu\n", mid_entry->mid);
|
||||
kref_get(&mid_entry->refcount);
|
||||
mid_entry->mid_state = MID_SHUTDOWN;
|
||||
list_move(&mid_entry->qhead, &dispose_list);
|
||||
|
|
@ -752,7 +752,7 @@ static void clean_demultiplex_info(struct TCP_Server_Info *server)
|
|||
/* now walk dispose list and issue callbacks */
|
||||
list_for_each_safe(tmp, tmp2, &dispose_list) {
|
||||
mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
|
||||
cifs_dbg(FYI, "Callback mid 0x%llx\n", mid_entry->mid);
|
||||
cifs_dbg(FYI, "Callback mid %llu\n", mid_entry->mid);
|
||||
list_del_init(&mid_entry->qhead);
|
||||
mid_entry->callback(mid_entry);
|
||||
cifs_mid_q_entry_release(mid_entry);
|
||||
|
|
@ -1429,6 +1429,11 @@ cifs_get_tcp_session(struct smb3_fs_context *ctx)
|
|||
tcp_ses->min_offload = ctx->min_offload;
|
||||
tcp_ses->tcpStatus = CifsNeedNegotiate;
|
||||
|
||||
if ((ctx->max_credits < 20) || (ctx->max_credits > 60000))
|
||||
tcp_ses->max_credits = SMB2_MAX_CREDITS_AVAILABLE;
|
||||
else
|
||||
tcp_ses->max_credits = ctx->max_credits;
|
||||
|
||||
tcp_ses->nr_targets = 1;
|
||||
tcp_ses->ignore_signature = ctx->ignore_signature;
|
||||
/* thread spawned, put it on the list */
|
||||
|
|
@ -2832,11 +2837,6 @@ static int mount_get_conns(struct smb3_fs_context *ctx, struct cifs_sb_info *cif
|
|||
|
||||
*nserver = server;
|
||||
|
||||
if ((ctx->max_credits < 20) || (ctx->max_credits > 60000))
|
||||
server->max_credits = SMB2_MAX_CREDITS_AVAILABLE;
|
||||
else
|
||||
server->max_credits = ctx->max_credits;
|
||||
|
||||
/* get a reference to a SMB session */
|
||||
ses = cifs_get_smb_ses(server, ctx);
|
||||
if (IS_ERR(ses)) {
|
||||
|
|
|
|||
|
|
@ -230,6 +230,7 @@ cifs_ses_add_channel(struct cifs_sb_info *cifs_sb, struct cifs_ses *ses,
|
|||
ctx.noautotune = ses->server->noautotune;
|
||||
ctx.sockopt_tcp_nodelay = ses->server->tcp_nodelay;
|
||||
ctx.echo_interval = ses->server->echo_interval / HZ;
|
||||
ctx.max_credits = ses->server->max_credits;
|
||||
|
||||
/*
|
||||
* This will be used for encoding/decoding user/domain/pw
|
||||
|
|
|
|||
|
|
@ -358,6 +358,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
if (cfile)
|
||||
goto after_close;
|
||||
/* Close */
|
||||
flags |= CIFS_CP_CREATE_CLOSE_OP;
|
||||
rqst[num_rqst].rq_iov = &vars->close_iov[0];
|
||||
rqst[num_rqst].rq_nvec = 1;
|
||||
rc = SMB2_close_init(tcon, server,
|
||||
|
|
|
|||
|
|
@ -767,7 +767,7 @@ smb2_cancelled_close_fid(struct work_struct *work)
|
|||
int rc;
|
||||
|
||||
if (cancelled->mid)
|
||||
cifs_tcon_dbg(VFS, "Close unmatched open for MID:%llx\n",
|
||||
cifs_tcon_dbg(VFS, "Close unmatched open for MID:%llu\n",
|
||||
cancelled->mid);
|
||||
else
|
||||
cifs_tcon_dbg(VFS, "Close interrupted close\n");
|
||||
|
|
@ -844,14 +844,14 @@ smb2_handle_cancelled_close(struct cifs_tcon *tcon, __u64 persistent_fid,
|
|||
}
|
||||
|
||||
int
|
||||
smb2_handle_cancelled_mid(char *buffer, struct TCP_Server_Info *server)
|
||||
smb2_handle_cancelled_mid(struct mid_q_entry *mid, struct TCP_Server_Info *server)
|
||||
{
|
||||
struct smb2_sync_hdr *sync_hdr = (struct smb2_sync_hdr *)buffer;
|
||||
struct smb2_create_rsp *rsp = (struct smb2_create_rsp *)buffer;
|
||||
struct smb2_sync_hdr *sync_hdr = mid->resp_buf;
|
||||
struct smb2_create_rsp *rsp = mid->resp_buf;
|
||||
struct cifs_tcon *tcon;
|
||||
int rc;
|
||||
|
||||
if (sync_hdr->Command != SMB2_CREATE ||
|
||||
if ((mid->optype & CIFS_CP_CREATE_CLOSE_OP) || sync_hdr->Command != SMB2_CREATE ||
|
||||
sync_hdr->Status != STATUS_SUCCESS)
|
||||
return 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -1195,7 +1195,7 @@ smb2_set_ea(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
struct TCP_Server_Info *server = cifs_pick_channel(ses);
|
||||
__le16 *utf16_path = NULL;
|
||||
int ea_name_len = strlen(ea_name);
|
||||
int flags = 0;
|
||||
int flags = CIFS_CP_CREATE_CLOSE_OP;
|
||||
int len;
|
||||
struct smb_rqst rqst[3];
|
||||
int resp_buftype[3];
|
||||
|
|
@ -1573,7 +1573,7 @@ smb2_ioctl_query_info(const unsigned int xid,
|
|||
struct smb_query_info qi;
|
||||
struct smb_query_info __user *pqi;
|
||||
int rc = 0;
|
||||
int flags = 0;
|
||||
int flags = CIFS_CP_CREATE_CLOSE_OP;
|
||||
struct smb2_query_info_rsp *qi_rsp = NULL;
|
||||
struct smb2_ioctl_rsp *io_rsp = NULL;
|
||||
void *buffer = NULL;
|
||||
|
|
@ -2577,7 +2577,7 @@ smb2_query_info_compound(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
{
|
||||
struct cifs_ses *ses = tcon->ses;
|
||||
struct TCP_Server_Info *server = cifs_pick_channel(ses);
|
||||
int flags = 0;
|
||||
int flags = CIFS_CP_CREATE_CLOSE_OP;
|
||||
struct smb_rqst rqst[3];
|
||||
int resp_buftype[3];
|
||||
struct kvec rsp_iov[3];
|
||||
|
|
@ -2975,7 +2975,7 @@ smb2_query_symlink(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
unsigned int sub_offset;
|
||||
unsigned int print_len;
|
||||
unsigned int print_offset;
|
||||
int flags = 0;
|
||||
int flags = CIFS_CP_CREATE_CLOSE_OP;
|
||||
struct smb_rqst rqst[3];
|
||||
int resp_buftype[3];
|
||||
struct kvec rsp_iov[3];
|
||||
|
|
@ -3157,7 +3157,7 @@ smb2_query_reparse_tag(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
struct cifs_open_parms oparms;
|
||||
struct cifs_fid fid;
|
||||
struct TCP_Server_Info *server = cifs_pick_channel(tcon->ses);
|
||||
int flags = 0;
|
||||
int flags = CIFS_CP_CREATE_CLOSE_OP;
|
||||
struct smb_rqst rqst[3];
|
||||
int resp_buftype[3];
|
||||
struct kvec rsp_iov[3];
|
||||
|
|
|
|||
|
|
@ -4041,8 +4041,7 @@ smb2_async_readv(struct cifs_readdata *rdata)
|
|||
if (rdata->credits.value > 0) {
|
||||
shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(rdata->bytes,
|
||||
SMB2_MAX_BUFFER_SIZE));
|
||||
shdr->CreditRequest =
|
||||
cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 1);
|
||||
shdr->CreditRequest = cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 8);
|
||||
|
||||
rc = adjust_credits(server, &rdata->credits, rdata->bytes);
|
||||
if (rc)
|
||||
|
|
@ -4348,8 +4347,7 @@ smb2_async_writev(struct cifs_writedata *wdata,
|
|||
if (wdata->credits.value > 0) {
|
||||
shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(wdata->bytes,
|
||||
SMB2_MAX_BUFFER_SIZE));
|
||||
shdr->CreditRequest =
|
||||
cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 1);
|
||||
shdr->CreditRequest = cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 8);
|
||||
|
||||
rc = adjust_credits(server, &wdata->credits, wdata->bytes);
|
||||
if (rc)
|
||||
|
|
|
|||
|
|
@ -246,8 +246,7 @@ extern int SMB2_oplock_break(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
extern int smb2_handle_cancelled_close(struct cifs_tcon *tcon,
|
||||
__u64 persistent_fid,
|
||||
__u64 volatile_fid);
|
||||
extern int smb2_handle_cancelled_mid(char *buffer,
|
||||
struct TCP_Server_Info *server);
|
||||
extern int smb2_handle_cancelled_mid(struct mid_q_entry *mid, struct TCP_Server_Info *server);
|
||||
void smb2_cancelled_close_fid(struct work_struct *work);
|
||||
extern int SMB2_QFS_info(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
u64 persistent_file_id, u64 volatile_file_id,
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ static void _cifs_mid_q_entry_release(struct kref *refcount)
|
|||
if (midEntry->resp_buf && (midEntry->mid_flags & MID_WAIT_CANCELLED) &&
|
||||
midEntry->mid_state == MID_RESPONSE_RECEIVED &&
|
||||
server->ops->handle_cancelled_mid)
|
||||
server->ops->handle_cancelled_mid(midEntry->resp_buf, server);
|
||||
server->ops->handle_cancelled_mid(midEntry, server);
|
||||
|
||||
midEntry->mid_state = MID_FREE;
|
||||
atomic_dec(&midCount);
|
||||
|
|
@ -1207,7 +1207,7 @@ compound_send_recv(const unsigned int xid, struct cifs_ses *ses,
|
|||
}
|
||||
if (rc != 0) {
|
||||
for (; i < num_rqst; i++) {
|
||||
cifs_server_dbg(VFS, "Cancelling wait for mid %llu cmd: %d\n",
|
||||
cifs_server_dbg(FYI, "Cancelling wait for mid %llu cmd: %d\n",
|
||||
midQ[i]->mid, le16_to_cpu(midQ[i]->command));
|
||||
send_cancel(server, &rqst[i], midQ[i]);
|
||||
spin_lock(&GlobalMid_Lock);
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
#define IS_MNT_SHARED(m) ((m)->mnt.mnt_flags & MNT_SHARED)
|
||||
#define IS_MNT_SLAVE(m) ((m)->mnt_master)
|
||||
#define IS_MNT_NEW(m) (!(m)->mnt_ns)
|
||||
#define IS_MNT_NEW(m) (!(m)->mnt_ns || is_anon_ns((m)->mnt_ns))
|
||||
#define CLEAR_MNT_SHARED(m) ((m)->mnt.mnt_flags &= ~MNT_SHARED)
|
||||
#define IS_MNT_UNBINDABLE(m) ((m)->mnt.mnt_flags & MNT_UNBINDABLE)
|
||||
#define IS_MNT_MARKED(m) ((m)->mnt.mnt_flags & MNT_MARKED)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user