kernel-6.12.58
This commit is contained in:
+56
-77
@@ -1,13 +1,13 @@
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
aufs5.15.41 base patch
|
||||
aufs6.12 base patch
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index c8103e57a70b..e1b9eaca78fd 100644
|
||||
index b878ddc99f94e..8489754030b99 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -3122,6 +3122,19 @@ F: include/uapi/linux/audit.h
|
||||
F: kernel/audit*
|
||||
@@ -3666,6 +3666,19 @@ F: kernel/audit*
|
||||
F: lib/*audit.c
|
||||
K: \baudit_[a-z_0-9]\+\b
|
||||
|
||||
+AUFS (advanced multi layered unification filesystem) FILESYSTEM
|
||||
+M: "J. R. Okajima" <hooanon05g@gmail.com>
|
||||
@@ -22,21 +22,23 @@ index c8103e57a70b..e1b9eaca78fd 100644
|
||||
+F: fs/aufs/
|
||||
+F: include/uapi/linux/aufs_type.h
|
||||
+
|
||||
AUXILIARY DISPLAY DRIVERS
|
||||
M: Miguel Ojeda <ojeda@kernel.org>
|
||||
S: Maintained
|
||||
AUXILIARY BUS DRIVER
|
||||
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
R: Dave Ertman <david.m.ertman@intel.com>
|
||||
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
|
||||
index 8cba10aafadb..7a9e40b97831 100644
|
||||
index 78a7bb28defe4..479480f25a6c0 100644
|
||||
--- a/drivers/block/loop.c
|
||||
+++ b/drivers/block/loop.c
|
||||
@@ -799,6 +799,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
return error;
|
||||
@@ -661,6 +661,26 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
goto done;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * for AUFS
|
||||
+ * no get/put for file.
|
||||
+ */
|
||||
+/* Just to make the compiler silence, declare it */
|
||||
+struct file *loop_backing_file(struct super_block *sb);
|
||||
+struct file *loop_backing_file(struct super_block *sb)
|
||||
+{
|
||||
+ struct file *ret;
|
||||
@@ -55,10 +57,20 @@ index 8cba10aafadb..7a9e40b97831 100644
|
||||
|
||||
static ssize_t loop_attr_show(struct device *dev, char *page,
|
||||
diff --git a/fs/dcache.c b/fs/dcache.c
|
||||
index cf871a81f4fd..bc5095b734f5 100644
|
||||
index 0f6b16ba30d08..1ab11cad60e8c 100644
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -1320,7 +1320,7 @@ enum d_walk_ret {
|
||||
@@ -1223,6 +1223,9 @@ enum d_walk_ret {
|
||||
D_WALK_SKIP,
|
||||
};
|
||||
|
||||
+/* AUFS calls d_walk(). Just to make the compiler silence, declare it */
|
||||
+void d_walk(struct dentry *parent, void *data,
|
||||
+ enum d_walk_ret (*enter)(void *, struct dentry *));
|
||||
/**
|
||||
* d_walk - walk the dentry tree
|
||||
* @parent: start of walk
|
||||
@@ -1231,7 +1234,7 @@ enum d_walk_ret {
|
||||
*
|
||||
* The @enter() callbacks are called with d_lock held.
|
||||
*/
|
||||
@@ -66,21 +78,21 @@ index cf871a81f4fd..bc5095b734f5 100644
|
||||
+void d_walk(struct dentry *parent, void *data,
|
||||
enum d_walk_ret (*enter)(void *, struct dentry *))
|
||||
{
|
||||
struct dentry *this_parent;
|
||||
struct dentry *this_parent, *dentry;
|
||||
diff --git a/fs/fcntl.c b/fs/fcntl.c
|
||||
index 9c6c6a3e2de5..02382fa9bd34 100644
|
||||
index 22dd9dcce7ecc..460791727fd9c 100644
|
||||
--- a/fs/fcntl.c
|
||||
+++ b/fs/fcntl.c
|
||||
@@ -33,7 +33,7 @@
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
#define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME)
|
||||
|
||||
-static int setfl(int fd, struct file * filp, unsigned long arg)
|
||||
+int setfl(int fd, struct file *filp, unsigned long arg)
|
||||
-static int setfl(int fd, struct file * filp, unsigned int arg)
|
||||
+int setfl(int fd, struct file * filp, unsigned int arg)
|
||||
{
|
||||
struct inode * inode = file_inode(filp);
|
||||
int error = 0;
|
||||
@@ -64,6 +64,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg)
|
||||
@@ -67,6 +67,8 @@ static int setfl(int fd, struct file * filp, unsigned int arg)
|
||||
|
||||
if (filp->f_op->check_flags)
|
||||
error = filp->f_op->check_flags(arg);
|
||||
@@ -90,10 +102,10 @@ index 9c6c6a3e2de5..02382fa9bd34 100644
|
||||
return error;
|
||||
|
||||
diff --git a/fs/namespace.c b/fs/namespace.c
|
||||
index b696543adab8..c45740054bc7 100644
|
||||
index d26f5e6d2ca35..85739e2d64c00 100644
|
||||
--- a/fs/namespace.c
|
||||
+++ b/fs/namespace.c
|
||||
@@ -808,6 +808,12 @@ static inline int check_mnt(struct mount *mnt)
|
||||
@@ -966,6 +966,12 @@ static inline int check_mnt(struct mount *mnt)
|
||||
return mnt->mnt_ns == current->nsproxy->mnt_ns;
|
||||
}
|
||||
|
||||
@@ -107,74 +119,43 @@ index b696543adab8..c45740054bc7 100644
|
||||
* vfsmount lock must be held for write
|
||||
*/
|
||||
diff --git a/fs/splice.c b/fs/splice.c
|
||||
index 5dbce4dcc1a7..3e6ba363b777 100644
|
||||
index 06232d7e505f6..b15fd6073b6d3 100644
|
||||
--- a/fs/splice.c
|
||||
+++ b/fs/splice.c
|
||||
@@ -759,8 +759,8 @@ static int warn_unsupported(struct file *file, const char *op)
|
||||
@@ -933,7 +933,7 @@ static int warn_unsupported(struct file *file, const char *op)
|
||||
/*
|
||||
* Attempt to initiate a splice from pipe to file.
|
||||
*/
|
||||
-static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
- loff_t *ppos, size_t len, unsigned int flags)
|
||||
+long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
+ loff_t *ppos, size_t len, unsigned int flags)
|
||||
-static ssize_t do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
+ssize_t do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
loff_t *ppos, size_t len, unsigned int flags)
|
||||
{
|
||||
if (unlikely(!out->f_op->splice_write))
|
||||
return warn_unsupported(out, "write");
|
||||
@@ -770,9 +770,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
/*
|
||||
* Attempt to initiate a splice from a file to a pipe.
|
||||
*/
|
||||
-static long do_splice_to(struct file *in, loff_t *ppos,
|
||||
- struct pipe_inode_info *pipe, size_t len,
|
||||
- unsigned int flags)
|
||||
+long do_splice_to(struct file *in, loff_t *ppos,
|
||||
+ struct pipe_inode_info *pipe, size_t len,
|
||||
+ unsigned int flags)
|
||||
{
|
||||
unsigned int p_space;
|
||||
int ret;
|
||||
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
||||
index 56eba723477e..e60d8ad85400 100644
|
||||
index 3559446279c15..51b64b2ad82c4 100644
|
||||
--- a/include/linux/fs.h
|
||||
+++ b/include/linux/fs.h
|
||||
@@ -1381,6 +1381,7 @@ extern void fasync_free(struct fasync_struct *);
|
||||
@@ -1160,6 +1160,7 @@ extern void fasync_free(struct fasync_struct *);
|
||||
/* can be called from interrupts */
|
||||
extern void kill_fasync(struct fasync_struct **, int, int);
|
||||
|
||||
+extern int setfl(int fd, struct file *filp, unsigned long arg);
|
||||
+extern int setfl(int fd, struct file *filp, unsigned int arg);
|
||||
extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
|
||||
extern int f_setown(struct file *filp, unsigned long arg, int force);
|
||||
extern int f_setown(struct file *filp, int who, int force);
|
||||
extern void f_delown(struct file *filp);
|
||||
@@ -2092,6 +2093,7 @@ struct file_operations {
|
||||
ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
|
||||
@@ -2082,6 +2083,7 @@ struct file_operations {
|
||||
int (*lock) (struct file *, int, struct file_lock *);
|
||||
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
|
||||
int (*check_flags)(int);
|
||||
+ int (*setfl)(struct file *, unsigned long);
|
||||
int (*flock) (struct file *, int, struct file_lock *);
|
||||
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
|
||||
ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
|
||||
@@ -2615,6 +2617,7 @@ extern int current_umask(void);
|
||||
extern void ihold(struct inode * inode);
|
||||
extern void iput(struct inode *);
|
||||
extern int generic_update_time(struct inode *, struct timespec64 *, int);
|
||||
+extern int update_time(struct inode *, struct timespec64 *, int);
|
||||
|
||||
/* /sys/fs */
|
||||
extern struct kobject *fs_kobj;
|
||||
@@ -2778,6 +2781,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb)
|
||||
}
|
||||
|
||||
void emergency_thaw_all(void);
|
||||
+extern int __sync_filesystem(struct super_block *, int);
|
||||
extern int sync_filesystem(struct super_block *);
|
||||
extern const struct file_operations def_blk_fops;
|
||||
extern const struct file_operations def_chr_fops;
|
||||
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
|
||||
index 9fe165beb0f9..e47f7e15eeaf 100644
|
||||
index 217f7abf2cbfa..0e17b8c23f105 100644
|
||||
--- a/include/linux/lockdep.h
|
||||
+++ b/include/linux/lockdep.h
|
||||
@@ -248,6 +248,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock,
|
||||
@@ -210,6 +210,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock,
|
||||
return lock->key == key;
|
||||
}
|
||||
|
||||
@@ -184,10 +165,10 @@ index 9fe165beb0f9..e47f7e15eeaf 100644
|
||||
* Acquire a lock.
|
||||
*
|
||||
diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h
|
||||
index 8f882f5881e8..6b9808f09843 100644
|
||||
index 70b366b648160..08cfdabb2721f 100644
|
||||
--- a/include/linux/mnt_namespace.h
|
||||
+++ b/include/linux/mnt_namespace.h
|
||||
@@ -7,12 +7,15 @@ struct mnt_namespace;
|
||||
@@ -10,6 +10,7 @@ struct mnt_namespace;
|
||||
struct fs_struct;
|
||||
struct user_namespace;
|
||||
struct ns_common;
|
||||
@@ -195,7 +176,8 @@ index 8f882f5881e8..6b9808f09843 100644
|
||||
|
||||
extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *,
|
||||
struct user_namespace *, struct fs_struct *);
|
||||
extern void put_mnt_ns(struct mnt_namespace *ns);
|
||||
@@ -17,6 +18,8 @@ extern void put_mnt_ns(struct mnt_namespace *ns);
|
||||
DEFINE_FREE(put_mnt_ns, struct mnt_namespace *, if (!IS_ERR_OR_NULL(_T)) put_mnt_ns(_T))
|
||||
extern struct ns_common *from_mnt_ns(struct mnt_namespace *);
|
||||
|
||||
+extern int is_current_mnt_ns(struct vfsmount *mnt);
|
||||
@@ -204,25 +186,22 @@ index 8f882f5881e8..6b9808f09843 100644
|
||||
extern const struct file_operations proc_mountinfo_operations;
|
||||
extern const struct file_operations proc_mountstats_operations;
|
||||
diff --git a/include/linux/splice.h b/include/linux/splice.h
|
||||
index a55179fd60fc..8e21c53cf883 100644
|
||||
index 9dec4861d09f6..14583d8468640 100644
|
||||
--- a/include/linux/splice.h
|
||||
+++ b/include/linux/splice.h
|
||||
@@ -93,4 +93,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *);
|
||||
@@ -108,4 +108,7 @@ extern void splice_shrink_spd(struct splice_pipe_desc *);
|
||||
|
||||
extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
|
||||
extern const struct pipe_buf_operations default_pipe_buf_ops;
|
||||
+
|
||||
+extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
+ loff_t *ppos, size_t len, unsigned int flags);
|
||||
+extern long do_splice_to(struct file *in, loff_t *ppos,
|
||||
+ struct pipe_inode_info *pipe, size_t len,
|
||||
+ unsigned int flags);
|
||||
+extern ssize_t do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
+ loff_t *ppos, size_t len, unsigned int flags);
|
||||
#endif
|
||||
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
|
||||
index a30702b847ba..ce380d0abdf0 100644
|
||||
index 536bd471557f5..34b378cf7a95f 100644
|
||||
--- a/kernel/locking/lockdep.c
|
||||
+++ b/kernel/locking/lockdep.c
|
||||
@@ -187,7 +187,7 @@ unsigned long max_lock_class_idx;
|
||||
@@ -218,7 +218,7 @@ unsigned long max_lock_class_idx;
|
||||
struct lock_class lock_classes[MAX_LOCKDEP_KEYS];
|
||||
DECLARE_BITMAP(lock_classes_in_use, MAX_LOCKDEP_KEYS);
|
||||
|
||||
@@ -231,7 +210,7 @@ index a30702b847ba..ce380d0abdf0 100644
|
||||
{
|
||||
unsigned int class_idx = hlock->class_idx;
|
||||
|
||||
@@ -208,6 +208,7 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock)
|
||||
@@ -239,6 +239,7 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock)
|
||||
*/
|
||||
return lock_classes + class_idx;
|
||||
}
|
||||
+6
-6
@@ -1,11 +1,11 @@
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
aufs5.15.41 kbuild patch
|
||||
aufs6.12 kbuild patch
|
||||
|
||||
diff --git a/fs/Kconfig b/fs/Kconfig
|
||||
index a6313a969bc5..aca4b89d41a1 100644
|
||||
index aae170fc27952..d5bb584649f50 100644
|
||||
--- a/fs/Kconfig
|
||||
+++ b/fs/Kconfig
|
||||
@@ -312,6 +312,7 @@ source "fs/sysv/Kconfig"
|
||||
@@ -341,6 +341,7 @@ source "fs/sysv/Kconfig"
|
||||
source "fs/ufs/Kconfig"
|
||||
source "fs/erofs/Kconfig"
|
||||
source "fs/vboxsf/Kconfig"
|
||||
@@ -14,11 +14,11 @@ index a6313a969bc5..aca4b89d41a1 100644
|
||||
endif # MISC_FILESYSTEMS
|
||||
|
||||
diff --git a/fs/Makefile b/fs/Makefile
|
||||
index 84c5e4cdfee5..b4fcdad8412e 100644
|
||||
index 61679fd587b7e..b2539712b80d0 100644
|
||||
--- a/fs/Makefile
|
||||
+++ b/fs/Makefile
|
||||
@@ -138,3 +138,4 @@ obj-$(CONFIG_EFIVAR_FS) += efivarfs/
|
||||
obj-$(CONFIG_EROFS_FS) += erofs/
|
||||
@@ -130,3 +130,4 @@ obj-$(CONFIG_EROFS_FS) += erofs/
|
||||
obj-$(CONFIG_VBOXSF_FS) += vboxsf/
|
||||
obj-$(CONFIG_ZONEFS_FS) += zonefs/
|
||||
obj-$(CONFIG_BPF_LSM) += bpf_fs_kfuncs.o
|
||||
+obj-$(CONFIG_AUFS_FS) += aufs/
|
||||
+42
-47
@@ -1,11 +1,20 @@
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
aufs5.15.41 loopback patch
|
||||
aufs6.12 loopback patch
|
||||
|
||||
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
|
||||
index 7a9e40b97831..5ed06240cc9c 100644
|
||||
index 479480f25a6c0..ba3477c30e294 100644
|
||||
--- a/drivers/block/loop.c
|
||||
+++ b/drivers/block/loop.c
|
||||
@@ -673,6 +673,15 @@ static inline void loop_update_dio(struct loop_device *lo)
|
||||
@@ -54,7 +54,7 @@ struct loop_device {
|
||||
int lo_flags;
|
||||
char lo_file_name[LO_NAME_SIZE];
|
||||
|
||||
- struct file * lo_backing_file;
|
||||
+ struct file *lo_backing_file, *lo_backing_virt_file;
|
||||
struct block_device *lo_device;
|
||||
|
||||
gfp_t old_gfp_mask;
|
||||
@@ -526,6 +526,15 @@ static inline void loop_update_dio(struct loop_device *lo)
|
||||
lo->use_dio);
|
||||
}
|
||||
|
||||
@@ -21,7 +30,7 @@ index 7a9e40b97831..5ed06240cc9c 100644
|
||||
static void loop_reread_partitions(struct loop_device *lo)
|
||||
{
|
||||
int rc;
|
||||
@@ -730,6 +739,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
@@ -583,6 +592,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
{
|
||||
struct file *file = fget(arg);
|
||||
struct file *old_file;
|
||||
@@ -29,7 +38,7 @@ index 7a9e40b97831..5ed06240cc9c 100644
|
||||
int error;
|
||||
bool partscan;
|
||||
bool is_loop;
|
||||
@@ -749,11 +759,19 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
@@ -606,11 +616,19 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
if (!(lo->lo_flags & LO_FLAGS_READ_ONLY))
|
||||
goto out_err;
|
||||
|
||||
@@ -49,7 +58,7 @@ index 7a9e40b97831..5ed06240cc9c 100644
|
||||
|
||||
error = -EINVAL;
|
||||
|
||||
@@ -766,6 +784,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
@@ -623,6 +641,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
blk_mq_freeze_queue(lo->lo_queue);
|
||||
mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask);
|
||||
lo->lo_backing_file = file;
|
||||
@@ -57,7 +66,7 @@ index 7a9e40b97831..5ed06240cc9c 100644
|
||||
lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping);
|
||||
mapping_set_gfp_mask(file->f_mapping,
|
||||
lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
|
||||
@@ -788,6 +807,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
@@ -645,6 +664,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
* dependency.
|
||||
*/
|
||||
fput(old_file);
|
||||
@@ -65,25 +74,25 @@ index 7a9e40b97831..5ed06240cc9c 100644
|
||||
+ fput(old_virt_file);
|
||||
if (partscan)
|
||||
loop_reread_partitions(lo);
|
||||
return 0;
|
||||
@@ -796,6 +817,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
|
||||
@@ -658,6 +679,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
|
||||
loop_global_unlock(lo, is_loop);
|
||||
out_putf:
|
||||
fput(file);
|
||||
+ if (virt_file)
|
||||
+ fput(virt_file);
|
||||
return error;
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -1201,6 +1224,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
|
||||
@@ -1039,6 +1062,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
|
||||
const struct loop_config *config)
|
||||
{
|
||||
struct file *file = fget(config->fd);
|
||||
+ struct file *f, *virt_file = NULL;
|
||||
struct inode *inode;
|
||||
struct address_space *mapping;
|
||||
int error;
|
||||
@@ -1216,6 +1240,13 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
|
||||
loff_t size;
|
||||
@@ -1052,6 +1076,13 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
|
||||
/* This is safe, since we have a reference from open(). */
|
||||
__module_get(THIS_MODULE);
|
||||
|
||||
@@ -97,7 +106,7 @@ index 7a9e40b97831..5ed06240cc9c 100644
|
||||
/*
|
||||
* If we don't hold exclusive handle for the device, upgrade to it
|
||||
* here to avoid changing device under exclusive owner.
|
||||
@@ -1281,6 +1312,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
|
||||
@@ -1108,6 +1139,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
|
||||
lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO;
|
||||
lo->lo_device = bdev;
|
||||
lo->lo_backing_file = file;
|
||||
@@ -105,7 +114,7 @@ index 7a9e40b97831..5ed06240cc9c 100644
|
||||
lo->old_gfp_mask = mapping_gfp_mask(mapping);
|
||||
mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
|
||||
|
||||
@@ -1331,6 +1363,8 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
|
||||
@@ -1150,6 +1182,8 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
|
||||
bd_abort_claiming(bdev, loop_configure);
|
||||
out_putf:
|
||||
fput(file);
|
||||
@@ -114,49 +123,34 @@ index 7a9e40b97831..5ed06240cc9c 100644
|
||||
/* This is safe: open() is still holding a reference. */
|
||||
module_put(THIS_MODULE);
|
||||
return error;
|
||||
@@ -1339,6 +1373,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
|
||||
static int __loop_clr_fd(struct loop_device *lo, bool release)
|
||||
@@ -1159,11 +1193,13 @@ static void __loop_clr_fd(struct loop_device *lo)
|
||||
{
|
||||
struct file *filp = NULL;
|
||||
struct queue_limits lim;
|
||||
struct file *filp;
|
||||
+ struct file *virt_filp = lo->lo_backing_virt_file;
|
||||
gfp_t gfp = lo->old_gfp_mask;
|
||||
struct block_device *bdev = lo->lo_device;
|
||||
int err = 0;
|
||||
@@ -1390,6 +1425,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
|
||||
|
||||
spin_lock_irq(&lo->lo_lock);
|
||||
filp = lo->lo_backing_file;
|
||||
lo->lo_backing_file = NULL;
|
||||
+ lo->lo_backing_virt_file = NULL;
|
||||
spin_unlock_irq(&lo->lo_lock);
|
||||
|
||||
loop_release_xfer(lo);
|
||||
@@ -1470,6 +1506,8 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
|
||||
lo->lo_device = NULL;
|
||||
@@ -1225,6 +1261,8 @@ static void __loop_clr_fd(struct loop_device *lo)
|
||||
* fput can take open_mutex which is usually taken before lo_mutex.
|
||||
*/
|
||||
if (filp)
|
||||
fput(filp);
|
||||
fput(filp);
|
||||
+ if (virt_filp)
|
||||
+ fput(virt_filp);
|
||||
return err;
|
||||
}
|
||||
|
||||
diff --git a/drivers/block/loop.h b/drivers/block/loop.h
|
||||
index 04c88dd6eabd..0ff3ba22ee17 100644
|
||||
--- a/drivers/block/loop.h
|
||||
+++ b/drivers/block/loop.h
|
||||
@@ -46,7 +46,7 @@ struct loop_device {
|
||||
int (*ioctl)(struct loop_device *, int cmd,
|
||||
unsigned long arg);
|
||||
|
||||
- struct file * lo_backing_file;
|
||||
+ struct file *lo_backing_file, *lo_backing_virt_file;
|
||||
struct block_device *lo_device;
|
||||
void *key_data;
|
||||
|
||||
static int loop_clr_fd(struct loop_device *lo)
|
||||
diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
|
||||
index 99ceca144044..e49dfe855032 100644
|
||||
index db7e9fcf1056a..6d202136d29af 100644
|
||||
--- a/fs/aufs/f_op.c
|
||||
+++ b/fs/aufs/f_op.c
|
||||
@@ -304,7 +304,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
|
||||
@@ -317,7 +317,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
|
||||
if (IS_ERR(h_file))
|
||||
goto out;
|
||||
|
||||
@@ -166,7 +160,7 @@ index 99ceca144044..e49dfe855032 100644
|
||||
if (file->f_mapping != h_file->f_mapping) {
|
||||
file->f_mapping = h_file->f_mapping;
|
||||
diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c
|
||||
index 74347bd75b38..5ef888a1d53f 100644
|
||||
index 69dea4cda00c0..92a74affb2208 100644
|
||||
--- a/fs/aufs/loop.c
|
||||
+++ b/fs/aufs/loop.c
|
||||
@@ -133,3 +133,19 @@ void au_loopback_fin(void)
|
||||
@@ -190,7 +184,7 @@ index 74347bd75b38..5ef888a1d53f 100644
|
||||
+ return f;
|
||||
+}
|
||||
diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h
|
||||
index 7293bee427f9..3345c098d0d4 100644
|
||||
index 519efba31c700..ac701381da792 100644
|
||||
--- a/fs/aufs/loop.h
|
||||
+++ b/fs/aufs/loop.h
|
||||
@@ -26,6 +26,8 @@ void au_warn_loopback(struct super_block *h_sb);
|
||||
@@ -212,7 +206,7 @@ index 7293bee427f9..3345c098d0d4 100644
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
diff --git a/fs/aufs/super.c b/fs/aufs/super.c
|
||||
index 90043afec51c..0835f6da42d9 100644
|
||||
index 9c30cba527421..8161108d0f6d5 100644
|
||||
--- a/fs/aufs/super.c
|
||||
+++ b/fs/aufs/super.c
|
||||
@@ -758,7 +758,10 @@ const struct super_operations aufs_sop = {
|
||||
@@ -228,13 +222,14 @@ index 90043afec51c..0835f6da42d9 100644
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
||||
index e60d8ad85400..2ac5317f9b79 100644
|
||||
index 51b64b2ad82c4..8c3ff295b020b 100644
|
||||
--- a/include/linux/fs.h
|
||||
+++ b/include/linux/fs.h
|
||||
@@ -2226,6 +2226,10 @@ struct super_operations {
|
||||
struct shrink_control *);
|
||||
@@ -2248,6 +2248,11 @@ struct super_operations {
|
||||
long (*free_cached_objects)(struct super_block *,
|
||||
struct shrink_control *);
|
||||
void (*shutdown)(struct super_block *sb);
|
||||
+
|
||||
+#if IS_ENABLED(CONFIG_BLK_DEV_LOOP) || IS_ENABLED(CONFIG_BLK_DEV_LOOP_MODULE)
|
||||
+ /* and aufs */
|
||||
+ struct file *(*real_loop)(struct file *);
|
||||
+165
-132
@@ -1,24 +1,24 @@
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
aufs5.15.41 mmap patch
|
||||
aufs6.12 mmap patch
|
||||
|
||||
diff --git a/fs/proc/base.c b/fs/proc/base.c
|
||||
index 1f394095eb88..93f2479ef319 100644
|
||||
index b31283d81c52e..644bd3d84cf76 100644
|
||||
--- a/fs/proc/base.c
|
||||
+++ b/fs/proc/base.c
|
||||
@@ -2189,7 +2189,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
|
||||
@@ -2270,7 +2270,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
|
||||
rc = -ENOENT;
|
||||
vma = find_exact_vma(mm, vm_start, vm_end);
|
||||
if (vma && vma->vm_file) {
|
||||
- *path = vma->vm_file->f_path;
|
||||
- *path = *file_user_path(vma->vm_file);
|
||||
+ *path = vma_pr_or_file(vma)->f_path;
|
||||
path_get(path);
|
||||
rc = 0;
|
||||
}
|
||||
diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c
|
||||
index 13452b32e2bd..38acccfef9d4 100644
|
||||
index c6e7ebc637562..d7ccfd9097646 100644
|
||||
--- a/fs/proc/nommu.c
|
||||
+++ b/fs/proc/nommu.c
|
||||
@@ -40,7 +40,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region)
|
||||
@@ -39,7 +39,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region)
|
||||
file = region->vm_file;
|
||||
|
||||
if (file) {
|
||||
@@ -31,35 +31,43 @@ index 13452b32e2bd..38acccfef9d4 100644
|
||||
ino = inode->i_ino;
|
||||
}
|
||||
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
|
||||
index 79ca4d69dfd6..3d3067c8d868 100644
|
||||
index 7eb010de39fe2..0c576103f7f15 100644
|
||||
--- a/fs/proc/task_mmu.c
|
||||
+++ b/fs/proc/task_mmu.c
|
||||
@@ -280,7 +280,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
|
||||
const char *name = NULL;
|
||||
@@ -264,7 +264,8 @@ static void get_vma_name(struct vm_area_struct *vma,
|
||||
*name_fmt = "[anon_shmem:%s]";
|
||||
*name = anon_name->name;
|
||||
} else {
|
||||
- *path = file_user_path(vma->vm_file);
|
||||
+ struct file *f = vma_pr_or_file(vma);
|
||||
+ *path = file_user_path(f);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -333,7 +334,8 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
|
||||
dev_t dev = 0;
|
||||
|
||||
if (vma->vm_file) {
|
||||
- const struct inode *inode = file_user_inode(vma->vm_file);
|
||||
+ const struct inode *inode
|
||||
+ = file_inode(vma_pr_or_file(vma));
|
||||
|
||||
if (file) {
|
||||
- struct inode *inode = file_inode(vma->vm_file);
|
||||
+ struct inode *inode;
|
||||
+
|
||||
+ file = vma_pr_or_file(vma);
|
||||
+ inode = file_inode(file);
|
||||
dev = inode->i_sb->s_dev;
|
||||
ino = inode->i_ino;
|
||||
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
|
||||
@@ -1888,7 +1891,7 @@ static int show_numa_map(struct seq_file *m, void *v)
|
||||
@@ -3008,7 +3010,7 @@ static int show_numa_map(struct seq_file *m, void *v)
|
||||
struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
|
||||
struct vm_area_struct *vma = v;
|
||||
struct numa_maps *md = &numa_priv->md;
|
||||
- struct file *file = vma->vm_file;
|
||||
+ struct file *file = vma_pr_or_file(vma);
|
||||
struct mm_struct *mm = vma->vm_mm;
|
||||
struct mempolicy *pol;
|
||||
char buffer[64];
|
||||
struct mempolicy *pol;
|
||||
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
|
||||
index a6d21fc0033c..02c2de31196e 100644
|
||||
index bce6745330003..b12b5a75c799c 100644
|
||||
--- a/fs/proc/task_nommu.c
|
||||
+++ b/fs/proc/task_nommu.c
|
||||
@@ -155,7 +155,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
|
||||
@@ -137,7 +137,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
|
||||
file = vma->vm_file;
|
||||
|
||||
if (file) {
|
||||
@@ -72,14 +80,14 @@ index a6d21fc0033c..02c2de31196e 100644
|
||||
ino = inode->i_ino;
|
||||
pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
|
||||
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
||||
index 04345ff97f8c..4ab9bb75c894 100644
|
||||
index 61fff5d34ed53..94b66987b4bb0 100644
|
||||
--- a/include/linux/mm.h
|
||||
+++ b/include/linux/mm.h
|
||||
@@ -1813,6 +1813,43 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
|
||||
unmap_mapping_range(mapping, holebegin, holelen, 0);
|
||||
}
|
||||
@@ -2469,6 +2469,43 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
|
||||
static inline struct vm_area_struct *vma_lookup(struct mm_struct *mm,
|
||||
unsigned long addr);
|
||||
|
||||
+#if IS_ENABLED(CONFIG_AUFS_FS)
|
||||
+#if 1 /* IS_ENABLED(CONFIG_AUFS_FS) */
|
||||
+extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int);
|
||||
+extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[],
|
||||
+ int);
|
||||
@@ -120,172 +128,148 @@ index 04345ff97f8c..4ab9bb75c894 100644
|
||||
void *buf, int len, unsigned int gup_flags);
|
||||
extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
|
||||
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
|
||||
index 7f8ee09c711f..8fea872e08f7 100644
|
||||
index 6e3bdf8e38bca..c70247dc71022 100644
|
||||
--- a/include/linux/mm_types.h
|
||||
+++ b/include/linux/mm_types.h
|
||||
@@ -294,6 +294,9 @@ struct vm_region {
|
||||
@@ -572,6 +572,9 @@ struct vm_region {
|
||||
unsigned long vm_top; /* region allocated to here */
|
||||
unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */
|
||||
struct file *vm_file; /* the backing file or NULL */
|
||||
+#if IS_ENABLED(CONFIG_AUFS_FS)
|
||||
+#if 1 /* IS_ENABLED(CONFIG_AUFS_FS) */
|
||||
+ struct file *vm_prfile; /* the virtual backing file or NULL */
|
||||
+#endif
|
||||
|
||||
int vm_usage; /* region usage count (access under nommu_region_sem) */
|
||||
bool vm_icache_flushed : 1; /* true if the icache has been flushed for
|
||||
@@ -373,6 +376,9 @@ struct vm_area_struct {
|
||||
@@ -747,6 +750,9 @@ struct vm_area_struct {
|
||||
unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
|
||||
units */
|
||||
struct file * vm_file; /* File we map to (can be NULL). */
|
||||
+#if IS_ENABLED(CONFIG_AUFS_FS)
|
||||
+#if 1 /* IS_ENABLED(CONFIG_AUFS_FS) */
|
||||
+ struct file *vm_prfile; /* shadow of vm_file */
|
||||
+#endif
|
||||
void * vm_private_data; /* was vm_pte (shared mem) */
|
||||
|
||||
#ifdef CONFIG_SWAP
|
||||
#ifdef CONFIG_ANON_VMA_NAME
|
||||
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||
index 89475c994ca9..82f46f8f4090 100644
|
||||
index 22f43721d031d..03abd72b3353d 100644
|
||||
--- a/kernel/fork.c
|
||||
+++ b/kernel/fork.c
|
||||
@@ -573,7 +573,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
|
||||
@@ -730,7 +730,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
|
||||
if (file) {
|
||||
struct address_space *mapping = file->f_mapping;
|
||||
|
||||
- get_file(file);
|
||||
+ vma_get_file(tmp);
|
||||
i_mmap_lock_write(mapping);
|
||||
if (tmp->vm_flags & VM_SHARED)
|
||||
if (vma_is_shared_maywrite(tmp))
|
||||
mapping_allow_writable(mapping);
|
||||
diff --git a/mm/Makefile b/mm/Makefile
|
||||
index fc60a40ce954..d45773672730 100644
|
||||
index d5639b0361663..bb57f616f0325 100644
|
||||
--- a/mm/Makefile
|
||||
+++ b/mm/Makefile
|
||||
@@ -130,3 +130,4 @@ obj-$(CONFIG_PAGE_REPORTING) += page_reporting.o
|
||||
obj-$(CONFIG_IO_MAPPING) += io-mapping.o
|
||||
obj-$(CONFIG_HAVE_BOOTMEM_INFO_NODE) += bootmem_info.o
|
||||
obj-$(CONFIG_GENERIC_IOREMAP) += ioremap.o
|
||||
+obj-$(CONFIG_AUFS_FS:m=y) += prfile.o
|
||||
@@ -145,3 +145,4 @@ obj-$(CONFIG_GENERIC_IOREMAP) += ioremap.o
|
||||
obj-$(CONFIG_SHRINKER_DEBUG) += shrinker_debug.o
|
||||
obj-$(CONFIG_EXECMEM) += execmem.o
|
||||
obj-$(CONFIG_TMPFS_QUOTA) += shmem_quota.o
|
||||
+obj-y += prfile.o
|
||||
diff --git a/mm/filemap.c b/mm/filemap.c
|
||||
index 00e391e75880..d8b52d814319 100644
|
||||
index 56fa431c52af7..d55fe4e7bcfd1 100644
|
||||
--- a/mm/filemap.c
|
||||
+++ b/mm/filemap.c
|
||||
@@ -3353,7 +3353,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf)
|
||||
@@ -3707,7 +3707,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf)
|
||||
vm_fault_t ret = VM_FAULT_LOCKED;
|
||||
|
||||
sb_start_pagefault(mapping->host->i_sb);
|
||||
- file_update_time(vmf->vma->vm_file);
|
||||
+ vma_file_update_time(vmf->vma);
|
||||
lock_page(page);
|
||||
if (page->mapping != mapping) {
|
||||
unlock_page(page);
|
||||
folio_lock(folio);
|
||||
if (folio->mapping != mapping) {
|
||||
folio_unlock(folio);
|
||||
diff --git a/mm/mmap.c b/mm/mmap.c
|
||||
index 6bb553ed5c55..3f9d6d155171 100644
|
||||
index 79d541f1502b2..2dc64f6dc0181 100644
|
||||
--- a/mm/mmap.c
|
||||
+++ b/mm/mmap.c
|
||||
@@ -183,7 +183,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
|
||||
if (vma->vm_ops && vma->vm_ops->close)
|
||||
vma->vm_ops->close(vma);
|
||||
if (vma->vm_file)
|
||||
- fput(vma->vm_file);
|
||||
+ vma_fput(vma);
|
||||
mpol_put(vma_policy(vma));
|
||||
vm_area_free(vma);
|
||||
return next;
|
||||
@@ -952,7 +952,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
|
||||
if (remove_next) {
|
||||
if (file) {
|
||||
uprobe_munmap(next, next->vm_start, next->vm_end);
|
||||
- fput(file);
|
||||
+ vma_fput(vma);
|
||||
}
|
||||
if (next->anon_vma)
|
||||
anon_vma_merge(vma, next);
|
||||
@@ -1873,7 +1873,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
|
||||
return addr;
|
||||
|
||||
unmap_and_free_vma:
|
||||
- fput(vma->vm_file);
|
||||
+ vma_fput(vma);
|
||||
vma->vm_file = NULL;
|
||||
|
||||
/* Undo any partial mapping done by a device driver. */
|
||||
@@ -2723,7 +2723,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
goto out_free_mpol;
|
||||
|
||||
if (new->vm_file)
|
||||
- get_file(new->vm_file);
|
||||
+ vma_get_file(new);
|
||||
|
||||
if (new->vm_ops && new->vm_ops->open)
|
||||
new->vm_ops->open(new);
|
||||
@@ -2742,7 +2742,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
if (new->vm_ops && new->vm_ops->close)
|
||||
new->vm_ops->close(new);
|
||||
if (new->vm_file)
|
||||
- fput(new->vm_file);
|
||||
+ vma_fput(new);
|
||||
unlink_anon_vmas(new);
|
||||
out_free_mpol:
|
||||
mpol_put(vma_policy(new));
|
||||
@@ -2938,6 +2938,9 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||
unsigned long populate = 0;
|
||||
@@ -1484,7 +1484,7 @@ static unsigned long __mmap_region(struct file *file, unsigned long addr,
|
||||
* and cause general protection fault
|
||||
* ultimately.
|
||||
*/
|
||||
- fput(vma->vm_file);
|
||||
+ vma_fput(vma);
|
||||
vm_area_free(vma);
|
||||
vma = merge;
|
||||
/* Update vm_flags to pick up the change. */
|
||||
@@ -1654,6 +1654,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||
unsigned long ret = -EINVAL;
|
||||
struct file *file;
|
||||
+#if IS_ENABLED(CONFIG_AUFS_FS)
|
||||
+ struct file *prfile;
|
||||
+#endif
|
||||
vm_flags_t vm_flags;
|
||||
+ struct file *prfile = NULL; /* aufs */
|
||||
|
||||
pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n",
|
||||
pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/mm/remap_file_pages.rst.\n",
|
||||
current->comm, current->pid);
|
||||
@@ -2993,10 +2996,34 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||
if (vma->vm_flags & VM_LOCKED)
|
||||
flags |= MAP_LOCKED;
|
||||
@@ -1696,14 +1697,18 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||
|
||||
+#if IS_ENABLED(CONFIG_AUFS_FS)
|
||||
/* Save vm_flags used to calculate prot and flags, and recheck later. */
|
||||
vm_flags = vma->vm_flags;
|
||||
- file = get_file(vma->vm_file);
|
||||
+ vma_get_file(vma);
|
||||
+ file = vma->vm_file;
|
||||
+#if 1 /* IS_ENABLED(CONFIG_AUFS_FS) */
|
||||
+ prfile = vma->vm_prfile;
|
||||
+ ret = do_mmap(vma->vm_file, start, size,
|
||||
+ prot, flags, pgoff, &populate, NULL);
|
||||
+#endif
|
||||
|
||||
mmap_read_unlock(mm);
|
||||
|
||||
/* Call outside mmap_lock to be consistent with other callers. */
|
||||
ret = security_mmap_file(file, prot, flags);
|
||||
if (ret) {
|
||||
- fput(file);
|
||||
+ vma_fput(vma);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1711,7 +1716,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||
|
||||
/* OK security check passed, take write lock + let it rip. */
|
||||
if (mmap_write_lock_killable(mm)) {
|
||||
- fput(file);
|
||||
+ vma_fput(vma);
|
||||
return -EINTR;
|
||||
}
|
||||
|
||||
@@ -1753,9 +1758,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||
|
||||
ret = do_mmap(vma->vm_file, start, size,
|
||||
prot, flags, 0, pgoff, &populate, NULL);
|
||||
+#if 1 /* IS_ENABLED(CONFIG_AUFS_FS) */
|
||||
+ if (!IS_ERR_VALUE(ret) && file && prfile) {
|
||||
+ struct vm_area_struct *new_vma;
|
||||
+
|
||||
+ new_vma = find_vma(mm, ret);
|
||||
+ if (!new_vma->vm_prfile)
|
||||
+ new_vma->vm_prfile = prfile;
|
||||
+ if (new_vma != vma)
|
||||
+ if (prfile)
|
||||
+ get_file(prfile);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
out:
|
||||
mmap_write_unlock(mm);
|
||||
+ /*
|
||||
+ * two fput()s instead of vma_fput(vma),
|
||||
+ * coz vma may not be available anymore.
|
||||
+ */
|
||||
+ fput(file);
|
||||
fput(file);
|
||||
+ if (prfile)
|
||||
+ fput(prfile);
|
||||
+#else
|
||||
file = get_file(vma->vm_file);
|
||||
ret = do_mmap(vma->vm_file, start, size,
|
||||
prot, flags, pgoff, &populate, NULL);
|
||||
fput(file);
|
||||
+#endif /* CONFIG_AUFS_FS */
|
||||
out:
|
||||
mmap_write_unlock(mm);
|
||||
if (populate)
|
||||
@@ -3277,7 +3304,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
|
||||
if (anon_vma_clone(new_vma, vma))
|
||||
goto out_free_mempol;
|
||||
if (new_vma->vm_file)
|
||||
- get_file(new_vma->vm_file);
|
||||
+ vma_get_file(new_vma);
|
||||
if (new_vma->vm_ops && new_vma->vm_ops->open)
|
||||
new_vma->vm_ops->open(new_vma);
|
||||
vma_link(mm, new_vma, prev, rb_link, rb_parent);
|
||||
mm_populate(ret, populate);
|
||||
if (!IS_ERR_VALUE(ret))
|
||||
diff --git a/mm/nommu.c b/mm/nommu.c
|
||||
index 02d2427b8f9e..a7419302ab4e 100644
|
||||
index 9cb6e99215e2b..5add36afa9786 100644
|
||||
--- a/mm/nommu.c
|
||||
+++ b/mm/nommu.c
|
||||
@@ -523,7 +523,7 @@ static void __put_nommu_region(struct vm_region *region)
|
||||
@@ -512,7 +512,7 @@ static void __put_nommu_region(struct vm_region *region)
|
||||
up_write(&nommu_region_sem);
|
||||
|
||||
if (region->vm_file)
|
||||
@@ -294,16 +278,16 @@ index 02d2427b8f9e..a7419302ab4e 100644
|
||||
|
||||
/* IO memory and memory shared directly out of the pagecache
|
||||
* from ramfs/tmpfs mustn't be released here */
|
||||
@@ -655,7 +655,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
|
||||
if (vma->vm_ops && vma->vm_ops->close)
|
||||
vma->vm_ops->close(vma);
|
||||
@@ -591,7 +591,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
|
||||
{
|
||||
vma_close(vma);
|
||||
if (vma->vm_file)
|
||||
- fput(vma->vm_file);
|
||||
+ vma_fput(vma);
|
||||
put_nommu_region(vma->vm_region);
|
||||
vm_area_free(vma);
|
||||
}
|
||||
@@ -1175,7 +1175,7 @@ unsigned long do_mmap(struct file *file,
|
||||
@@ -1123,7 +1123,7 @@ unsigned long do_mmap(struct file *file,
|
||||
goto error_just_free;
|
||||
}
|
||||
}
|
||||
@@ -312,9 +296,9 @@ index 02d2427b8f9e..a7419302ab4e 100644
|
||||
kmem_cache_free(vm_region_jar, region);
|
||||
region = pregion;
|
||||
result = start;
|
||||
@@ -1252,10 +1252,10 @@ unsigned long do_mmap(struct file *file,
|
||||
up_write(&nommu_region_sem);
|
||||
@@ -1209,10 +1209,10 @@ unsigned long do_mmap(struct file *file,
|
||||
error:
|
||||
vma_iter_free(&vmi);
|
||||
if (region->vm_file)
|
||||
- fput(region->vm_file);
|
||||
+ vmr_fput(region);
|
||||
@@ -327,7 +311,7 @@ index 02d2427b8f9e..a7419302ab4e 100644
|
||||
|
||||
diff --git a/mm/prfile.c b/mm/prfile.c
|
||||
new file mode 100644
|
||||
index 000000000000..511543ab1b41
|
||||
index 0000000000000..b034d160a18f4
|
||||
--- /dev/null
|
||||
+++ b/mm/prfile.c
|
||||
@@ -0,0 +1,86 @@
|
||||
@@ -339,7 +323,7 @@ index 000000000000..511543ab1b41
|
||||
+ *
|
||||
+ * See Documentation/filesystems/aufs/design/06mmap.txt
|
||||
+ *
|
||||
+ * Copyright (c) 2014-2021 Junjro R. Okajima
|
||||
+ * Copyright (c) 2014-2025 Junjro R. Okajima
|
||||
+ * Copyright (c) 2014 Ian Campbell
|
||||
+ */
|
||||
+
|
||||
@@ -417,3 +401,52 @@ index 000000000000..511543ab1b41
|
||||
+ fput(pr);
|
||||
+}
|
||||
+#endif /* !CONFIG_MMU */
|
||||
diff --git a/mm/vma.c b/mm/vma.c
|
||||
index 7621384d64cf5..3bb41fe6ac48e 100644
|
||||
--- a/mm/vma.c
|
||||
+++ b/mm/vma.c
|
||||
@@ -248,7 +248,7 @@ static void vma_complete(struct vma_prepare *vp, struct vma_iterator *vmi,
|
||||
if (vp->file) {
|
||||
uprobe_munmap(vp->remove, vp->remove->vm_start,
|
||||
vp->remove->vm_end);
|
||||
- fput(vp->file);
|
||||
+ vma_fput(vp->vma);
|
||||
}
|
||||
if (vp->remove->anon_vma)
|
||||
anon_vma_merge(vp->vma, vp->remove);
|
||||
@@ -328,7 +328,7 @@ void remove_vma(struct vm_area_struct *vma, bool unreachable)
|
||||
might_sleep();
|
||||
vma_close(vma);
|
||||
if (vma->vm_file)
|
||||
- fput(vma->vm_file);
|
||||
+ vma_fput(vma);
|
||||
mpol_put(vma_policy(vma));
|
||||
if (unreachable)
|
||||
__vm_area_free(vma);
|
||||
@@ -405,7 +405,7 @@ static int __split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
|
||||
goto out_free_mpol;
|
||||
|
||||
if (new->vm_file)
|
||||
- get_file(new->vm_file);
|
||||
+ vma_get_file(new);
|
||||
|
||||
if (new->vm_ops && new->vm_ops->open)
|
||||
new->vm_ops->open(new);
|
||||
@@ -1671,7 +1671,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
|
||||
if (anon_vma_clone(new_vma, vma))
|
||||
goto out_free_mempol;
|
||||
if (new_vma->vm_file)
|
||||
- get_file(new_vma->vm_file);
|
||||
+ vma_get_file(new_vma);
|
||||
if (new_vma->vm_ops && new_vma->vm_ops->open)
|
||||
new_vma->vm_ops->open(new_vma);
|
||||
if (vma_link(mm, new_vma))
|
||||
@@ -1684,7 +1684,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
|
||||
vma_close(new_vma);
|
||||
|
||||
if (new_vma->vm_file)
|
||||
- fput(new_vma->vm_file);
|
||||
+ vma_fput(new_vma);
|
||||
|
||||
unlink_anon_vmas(new_vma);
|
||||
out_free_mempol:
|
||||
+82
-82
@@ -1,11 +1,11 @@
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
aufs5.15.41 standalone patch
|
||||
aufs6.12 standalone patch
|
||||
|
||||
diff --git a/fs/dcache.c b/fs/dcache.c
|
||||
index bc5095b734f5..9508bd57a3bc 100644
|
||||
index 1ab11cad60e8c..3a01c42c6639e 100644
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -1425,6 +1425,7 @@ void d_walk(struct dentry *parent, void *data,
|
||||
@@ -1333,6 +1333,7 @@ void d_walk(struct dentry *parent, void *data,
|
||||
seq = 1;
|
||||
goto again;
|
||||
}
|
||||
@@ -13,7 +13,7 @@ index bc5095b734f5..9508bd57a3bc 100644
|
||||
|
||||
struct check_mount {
|
||||
struct vfsmount *mnt;
|
||||
@@ -2970,6 +2971,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
|
||||
@@ -2899,6 +2900,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
|
||||
|
||||
write_sequnlock(&rename_lock);
|
||||
}
|
||||
@@ -22,10 +22,10 @@ index bc5095b734f5..9508bd57a3bc 100644
|
||||
/**
|
||||
* d_ancestor - search for an ancestor
|
||||
diff --git a/fs/exec.c b/fs/exec.c
|
||||
index 29e865c59854..3ea36fa14622 100644
|
||||
index 6c53920795c2e..22e10087e34fa 100644
|
||||
--- a/fs/exec.c
|
||||
+++ b/fs/exec.c
|
||||
@@ -111,6 +111,7 @@ bool path_noexec(const struct path *path)
|
||||
@@ -114,6 +114,7 @@ bool path_noexec(const struct path *path)
|
||||
return (path->mnt->mnt_flags & MNT_NOEXEC) ||
|
||||
(path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC);
|
||||
}
|
||||
@@ -34,22 +34,22 @@ index 29e865c59854..3ea36fa14622 100644
|
||||
#ifdef CONFIG_USELIB
|
||||
/*
|
||||
diff --git a/fs/fcntl.c b/fs/fcntl.c
|
||||
index 02382fa9bd34..3418c60b9014 100644
|
||||
index 460791727fd9c..75ab59a3df36f 100644
|
||||
--- a/fs/fcntl.c
|
||||
+++ b/fs/fcntl.c
|
||||
@@ -86,6 +86,7 @@ int setfl(int fd, struct file *filp, unsigned long arg)
|
||||
@@ -90,6 +90,7 @@ int setfl(int fd, struct file * filp, unsigned int arg)
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(setfl);
|
||||
|
||||
static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
|
||||
int force)
|
||||
/*
|
||||
* Allocate an file->f_owner struct if it doesn't exist, handling racing
|
||||
diff --git a/fs/file_table.c b/fs/file_table.c
|
||||
index e8c9016703ad..5e7a880830fb 100644
|
||||
index eed5ffad9997c..2f6bead424786 100644
|
||||
--- a/fs/file_table.c
|
||||
+++ b/fs/file_table.c
|
||||
@@ -161,6 +161,7 @@ struct file *alloc_empty_file(int flags, const struct cred *cred)
|
||||
@@ -228,6 +228,7 @@ struct file *alloc_empty_file(int flags, const struct cred *cred)
|
||||
}
|
||||
return ERR_PTR(-ENFILE);
|
||||
}
|
||||
@@ -58,18 +58,10 @@ index e8c9016703ad..5e7a880830fb 100644
|
||||
/*
|
||||
* Variant of alloc_empty_file() that doesn't check and modify nr_files.
|
||||
diff --git a/fs/namespace.c b/fs/namespace.c
|
||||
index c45740054bc7..d3d750635610 100644
|
||||
index 85739e2d64c00..8aa96de6c151e 100644
|
||||
--- a/fs/namespace.c
|
||||
+++ b/fs/namespace.c
|
||||
@@ -439,6 +439,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
|
||||
mnt_dec_writers(real_mount(mnt));
|
||||
preempt_enable();
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(__mnt_drop_write);
|
||||
|
||||
/**
|
||||
* mnt_drop_write - give up write access to a mount
|
||||
@@ -813,6 +814,7 @@ int is_current_mnt_ns(struct vfsmount *mnt)
|
||||
@@ -971,6 +971,7 @@ int is_current_mnt_ns(struct vfsmount *mnt)
|
||||
{
|
||||
return check_mnt(real_mount(mnt));
|
||||
}
|
||||
@@ -77,7 +69,23 @@ index c45740054bc7..d3d750635610 100644
|
||||
|
||||
/*
|
||||
* vfsmount lock must be held for write
|
||||
@@ -2011,6 +2013,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
|
||||
@@ -2200,6 +2201,7 @@ struct vfsmount *collect_mounts(const struct path *path)
|
||||
return ERR_CAST(tree);
|
||||
return &tree->mnt;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(collect_mounts);
|
||||
|
||||
static void free_mnt_ns(struct mnt_namespace *);
|
||||
static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *, bool);
|
||||
@@ -2230,6 +2232,7 @@ void drop_collected_mounts(struct vfsmount *mnt)
|
||||
unlock_mount_hash();
|
||||
namespace_unlock();
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(drop_collected_mounts);
|
||||
|
||||
bool has_locked_children(struct mount *mnt, struct dentry *dentry)
|
||||
{
|
||||
@@ -2301,6 +2304,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -86,7 +94,7 @@ index c45740054bc7..d3d750635610 100644
|
||||
static void lock_mnt_tree(struct mount *mnt)
|
||||
{
|
||||
diff --git a/fs/notify/group.c b/fs/notify/group.c
|
||||
index fb89c351295d..460ad19c2570 100644
|
||||
index 18446b7b0d495..09138e0b8a6a5 100644
|
||||
--- a/fs/notify/group.c
|
||||
+++ b/fs/notify/group.c
|
||||
@@ -100,6 +100,7 @@ void fsnotify_get_group(struct fsnotify_group *group)
|
||||
@@ -98,10 +106,10 @@ index fb89c351295d..460ad19c2570 100644
|
||||
/*
|
||||
* Drop a reference to a group. Free it if it's through.
|
||||
diff --git a/fs/open.c b/fs/open.c
|
||||
index e0df1536eb69..81b2d7c83add 100644
|
||||
index 5da4df2f9b18a..6024098fc6444 100644
|
||||
--- a/fs/open.c
|
||||
+++ b/fs/open.c
|
||||
@@ -65,6 +65,7 @@ int do_truncate(struct user_namespace *mnt_userns, struct dentry *dentry,
|
||||
@@ -66,6 +66,7 @@ int do_truncate(struct mnt_idmap *idmap, struct dentry *dentry,
|
||||
inode_unlock(dentry->d_inode);
|
||||
return ret;
|
||||
}
|
||||
@@ -110,10 +118,10 @@ index e0df1536eb69..81b2d7c83add 100644
|
||||
long vfs_truncate(const struct path *path, loff_t length)
|
||||
{
|
||||
diff --git a/fs/read_write.c b/fs/read_write.c
|
||||
index af057c57bdc6..76017f8331fb 100644
|
||||
index 64dc24afdb3a7..ec1fd6aab1759 100644
|
||||
--- a/fs/read_write.c
|
||||
+++ b/fs/read_write.c
|
||||
@@ -492,6 +492,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
|
||||
@@ -576,6 +576,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
|
||||
inc_syscr(current);
|
||||
return ret;
|
||||
}
|
||||
@@ -121,7 +129,7 @@ index af057c57bdc6..76017f8331fb 100644
|
||||
|
||||
static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos)
|
||||
{
|
||||
@@ -602,6 +603,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
|
||||
@@ -691,6 +692,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
|
||||
file_end_write(file);
|
||||
return ret;
|
||||
}
|
||||
@@ -130,30 +138,22 @@ index af057c57bdc6..76017f8331fb 100644
|
||||
/* file_ppos returns &file->f_pos or NULL if file is stream */
|
||||
static inline loff_t *file_ppos(struct file *file)
|
||||
diff --git a/fs/splice.c b/fs/splice.c
|
||||
index 3e6ba363b777..7c1be373eb7c 100644
|
||||
index b15fd6073b6d3..0fdb86c3813e2 100644
|
||||
--- a/fs/splice.c
|
||||
+++ b/fs/splice.c
|
||||
@@ -766,6 +766,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
@@ -940,6 +940,7 @@ ssize_t do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
return warn_unsupported(out, "write");
|
||||
return out->f_op->splice_write(pipe, out, ppos, len, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_splice_from);
|
||||
|
||||
/*
|
||||
* Attempt to initiate a splice from a file to a pipe.
|
||||
@@ -795,6 +796,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
|
||||
return warn_unsupported(in, "read");
|
||||
return in->f_op->splice_read(in, ppos, pipe, len, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_splice_to);
|
||||
|
||||
/**
|
||||
* splice_direct_to_actor - splices data directly between two non-pipes
|
||||
* Indicate to the caller that there was a premature EOF when reading from the
|
||||
diff --git a/fs/xattr.c b/fs/xattr.c
|
||||
index 5c8c5175b385..ff7e9ff774b7 100644
|
||||
index 05ec7e7d9e87e..e07ffa052dfb4 100644
|
||||
--- a/fs/xattr.c
|
||||
+++ b/fs/xattr.c
|
||||
@@ -384,6 +384,7 @@ vfs_getxattr_alloc(struct user_namespace *mnt_userns, struct dentry *dentry,
|
||||
@@ -405,6 +405,7 @@ vfs_getxattr_alloc(struct mnt_idmap *idmap, struct dentry *dentry,
|
||||
*xattr_value = value;
|
||||
return error;
|
||||
}
|
||||
@@ -162,10 +162,10 @@ index 5c8c5175b385..ff7e9ff774b7 100644
|
||||
ssize_t
|
||||
__vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
|
||||
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
|
||||
index ce380d0abdf0..409c7d1a6803 100644
|
||||
index 34b378cf7a95f..df6a751298b32 100644
|
||||
--- a/kernel/locking/lockdep.c
|
||||
+++ b/kernel/locking/lockdep.c
|
||||
@@ -208,6 +208,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
|
||||
@@ -239,6 +239,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
|
||||
*/
|
||||
return lock_classes + class_idx;
|
||||
}
|
||||
@@ -174,79 +174,79 @@ index ce380d0abdf0..409c7d1a6803 100644
|
||||
|
||||
#ifdef CONFIG_LOCK_STAT
|
||||
diff --git a/kernel/task_work.c b/kernel/task_work.c
|
||||
index 1698fbe6f0e1..081b05acadf8 100644
|
||||
index c969f1f26be58..68eb672f425d9 100644
|
||||
--- a/kernel/task_work.c
|
||||
+++ b/kernel/task_work.c
|
||||
@@ -167,3 +167,4 @@ void task_work_run(void)
|
||||
@@ -242,3 +242,4 @@ void task_work_run(void)
|
||||
} while (work);
|
||||
}
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(task_work_run);
|
||||
diff --git a/security/security.c b/security/security.c
|
||||
index da631339e969..894203de3bcb 100644
|
||||
index c5981e558bc26..045dd716e3400 100644
|
||||
--- a/security/security.c
|
||||
+++ b/security/security.c
|
||||
@@ -1160,6 +1160,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
|
||||
@@ -1944,6 +1944,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
|
||||
return 0;
|
||||
return call_int_hook(path_rmdir, 0, dir, dentry);
|
||||
return call_int_hook(path_rmdir, dir, dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_rmdir);
|
||||
|
||||
int security_path_unlink(const struct path *dir, struct dentry *dentry)
|
||||
{
|
||||
@@ -1176,6 +1177,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
|
||||
/**
|
||||
* security_path_unlink() - Check if removing a hard link is allowed
|
||||
@@ -1979,6 +1980,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
|
||||
return 0;
|
||||
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
||||
return call_int_hook(path_symlink, dir, dentry, old_name);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_symlink);
|
||||
|
||||
int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
||||
struct dentry *new_dentry)
|
||||
@@ -1184,6 +1186,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
||||
/**
|
||||
* security_path_link - Check if creating a hard link is allowed
|
||||
@@ -1997,6 +1999,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
||||
return 0;
|
||||
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
||||
return call_int_hook(path_link, old_dentry, new_dir, new_dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_link);
|
||||
|
||||
int security_path_rename(const struct path *old_dir, struct dentry *old_dentry,
|
||||
const struct path *new_dir, struct dentry *new_dentry,
|
||||
@@ -1211,6 +1214,7 @@ int security_path_truncate(const struct path *path)
|
||||
/**
|
||||
* security_path_rename() - Check if renaming a file is allowed
|
||||
@@ -2058,6 +2061,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
|
||||
return 0;
|
||||
return call_int_hook(path_truncate, 0, path);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_truncate);
|
||||
|
||||
int security_path_chmod(const struct path *path, umode_t mode)
|
||||
{
|
||||
@@ -1218,6 +1222,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
|
||||
return 0;
|
||||
return call_int_hook(path_chmod, 0, path, mode);
|
||||
return call_int_hook(path_chmod, path, mode);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_chmod);
|
||||
|
||||
int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
||||
{
|
||||
@@ -1225,6 +1230,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
||||
/**
|
||||
* security_path_chown() - Check if changing the file's owner/group is allowed
|
||||
@@ -2075,6 +2079,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
||||
return 0;
|
||||
return call_int_hook(path_chown, 0, path, uid, gid);
|
||||
return call_int_hook(path_chown, path, uid, gid);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_chown);
|
||||
|
||||
int security_path_chroot(const struct path *path)
|
||||
{
|
||||
@@ -1325,6 +1331,7 @@ int security_inode_permission(struct inode *inode, int mask)
|
||||
/**
|
||||
* security_path_chroot() - Check if changing the root directory is allowed
|
||||
@@ -2319,6 +2324,7 @@ int security_inode_permission(struct inode *inode, int mask)
|
||||
return 0;
|
||||
return call_int_hook(inode_permission, 0, inode, mask);
|
||||
return call_int_hook(inode_permission, inode, mask);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_inode_permission);
|
||||
|
||||
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
/**
|
||||
* security_inode_setattr() - Check if setting file attributes is allowed
|
||||
@@ -2840,6 +2846,7 @@ int security_file_permission(struct file *file, int mask)
|
||||
{
|
||||
@@ -1522,6 +1529,7 @@ int security_file_permission(struct file *file, int mask)
|
||||
|
||||
return fsnotify_perm(file, mask);
|
||||
return call_int_hook(file_permission, file, mask);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_file_permission);
|
||||
|
||||
int security_file_alloc(struct file *file)
|
||||
/**
|
||||
* security_file_alloc() - Allocate and init a file's LSM blob
|
||||
@@ -3144,6 +3151,7 @@ int security_file_truncate(struct file *file)
|
||||
{
|
||||
return call_int_hook(file_truncate, file);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_file_truncate);
|
||||
|
||||
/**
|
||||
* security_task_alloc() - Allocate a task's LSM blob
|
||||
+1423
-1092
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,16 @@
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
aufs6.12 lockdep patch
|
||||
|
||||
diff --git a/include/linux/lockdep_types.h b/include/linux/lockdep_types.h
|
||||
index 9f361d3ab9d95..57efd6ffe7a44 100644
|
||||
--- a/include/linux/lockdep_types.h
|
||||
+++ b/include/linux/lockdep_types.h
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
-#define MAX_LOCKDEP_SUBCLASSES 8UL
|
||||
+#define MAX_LOCKDEP_SUBCLASSES (8UL + 4)
|
||||
|
||||
enum lockdep_wait_type {
|
||||
LD_WAIT_INV = 0, /* not checked, catch all */
|
||||
+61
-65
@@ -1,10 +1,10 @@
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h
|
||||
index 166158b6e917..0e9606171432 100644
|
||||
index 515a9a6a3c6f..9de809dac3be 100644
|
||||
--- a/include/linux/shmem_fs.h
|
||||
+++ b/include/linux/shmem_fs.h
|
||||
@@ -28,10 +28,13 @@ struct shmem_inode_info {
|
||||
@@ -55,10 +55,13 @@ struct shmem_quota_limits {
|
||||
};
|
||||
|
||||
struct shmem_sb_info {
|
||||
@@ -14,17 +14,17 @@ index 166158b6e917..0e9606171432 100644
|
||||
unsigned long max_blocks; /* How many blocks are allowed */
|
||||
struct percpu_counter used_blocks; /* How many are allocated */
|
||||
- unsigned long max_inodes; /* How many inodes are allowed */
|
||||
- unsigned long free_inodes; /* How many are left for allocation */
|
||||
- unsigned long free_ispace; /* How much ispace left for allocation */
|
||||
+ int max_inodes; /* How many inodes are allowed */
|
||||
+ int free_inodes; /* How many are left for allocation */
|
||||
+ unsigned long free_ispace; /* How many are left for allocation */
|
||||
raw_spinlock_t stat_lock; /* Serialize shmem_sb_info changes */
|
||||
umode_t mode; /* Mount mode for root directory */
|
||||
unsigned char huge; /* Whether to try for hugepages */
|
||||
diff --git a/mm/shmem.c b/mm/shmem.c
|
||||
index 342d1bc72867..460e4c54483f 100644
|
||||
index 568bb290bdce..f8869230f782 100644
|
||||
--- a/mm/shmem.c
|
||||
+++ b/mm/shmem.c
|
||||
@@ -108,7 +108,7 @@ struct shmem_falloc {
|
||||
@@ -112,7 +112,7 @@ struct shmem_falloc {
|
||||
|
||||
struct shmem_options {
|
||||
unsigned long long blocks;
|
||||
@@ -33,7 +33,7 @@ index 342d1bc72867..460e4c54483f 100644
|
||||
struct mempolicy *mpol;
|
||||
kuid_t uid;
|
||||
kgid_t gid;
|
||||
@@ -128,11 +128,14 @@ static unsigned long shmem_default_max_blocks(void)
|
||||
@@ -144,12 +144,14 @@ static unsigned long shmem_default_max_blocks(void)
|
||||
return totalram_pages() / 2;
|
||||
}
|
||||
|
||||
@@ -43,52 +43,53 @@ index 342d1bc72867..460e4c54483f 100644
|
||||
unsigned long nr_pages = totalram_pages();
|
||||
+ unsigned long ul;
|
||||
|
||||
- return min(nr_pages - totalhigh_pages(), nr_pages / 2);
|
||||
- return min3(nr_pages - totalhigh_pages(), nr_pages / 2,
|
||||
- ULONG_MAX / BOGO_INODE_SIZE);
|
||||
+ ul = INT_MAX;
|
||||
+ ul = min3(ul, nr_pages - totalhigh_pages(), nr_pages / 2);
|
||||
+ return ul;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1165,6 +1168,11 @@ static void shmem_evict_inode(struct inode *inode)
|
||||
@@ -1291,6 +1293,11 @@ static void shmem_evict_inode(struct inode *inode)
|
||||
}
|
||||
|
||||
simple_xattrs_free(&info->xattrs);
|
||||
WARN_ON(inode->i_blocks);
|
||||
simple_xattrs_free(&info->xattrs, sbinfo->max_inodes ? &freed : NULL);
|
||||
+ if (!sbinfo->idr_nouse && inode->i_ino) {
|
||||
+ mutex_lock(&sbinfo->idr_lock);
|
||||
+ idr_remove(&sbinfo->idr, inode->i_ino);
|
||||
+ mutex_unlock(&sbinfo->idr_lock);
|
||||
+ }
|
||||
shmem_free_inode(inode->i_sb);
|
||||
shmem_free_inode(inode->i_sb, freed);
|
||||
WARN_ON(inode->i_blocks);
|
||||
clear_inode(inode);
|
||||
}
|
||||
@@ -2336,6 +2344,25 @@ static struct inode *shmem_get_inode(struct super_block *sb, const struct inode
|
||||
break;
|
||||
}
|
||||
@@ -2854,6 +2861,25 @@ static struct inode *__shmem_get_inode(struct mnt_idmap *idmap,
|
||||
break;
|
||||
}
|
||||
|
||||
+ if (!sbinfo->idr_nouse) {
|
||||
+ /* inum 0 and 1 are unused */
|
||||
+ mutex_lock(&sbinfo->idr_lock);
|
||||
+ ino = idr_alloc(&sbinfo->idr, inode, 2, INT_MAX,
|
||||
+ GFP_NOFS);
|
||||
+ if (ino > 0) {
|
||||
+ inode->i_ino = ino;
|
||||
+ mutex_unlock(&sbinfo->idr_lock);
|
||||
+ __insert_inode_hash(inode, inode->i_ino);
|
||||
+ } else {
|
||||
+ inode->i_ino = 0;
|
||||
+ mutex_unlock(&sbinfo->idr_lock);
|
||||
+ iput(inode);
|
||||
+ /* shmem_free_inode() will be called */
|
||||
+ inode = NULL;
|
||||
+ }
|
||||
+ } else
|
||||
+ if (!sbinfo->idr_nouse) {
|
||||
+ /* inum 0 and 1 are unused */
|
||||
+ mutex_lock(&sbinfo->idr_lock);
|
||||
+ ino = idr_alloc(&sbinfo->idr, inode, 2, INT_MAX,
|
||||
+ GFP_NOFS);
|
||||
+ if (ino > 0) {
|
||||
+ inode->i_ino = ino;
|
||||
+ mutex_unlock(&sbinfo->idr_lock);
|
||||
+ __insert_inode_hash(inode, inode->i_ino);
|
||||
+ } else {
|
||||
+ inode->i_ino = 0;
|
||||
+ mutex_unlock(&sbinfo->idr_lock);
|
||||
+ iput(inode);
|
||||
+ /* shmem_free_inode() will be called */
|
||||
+ inode = NULL;
|
||||
+ }
|
||||
+ } else
|
||||
+ inode->i_ino = ino;
|
||||
+
|
||||
lockdep_annotate_inode_mutex_key(inode);
|
||||
} else
|
||||
shmem_free_inode(sb);
|
||||
@@ -3252,8 +3279,7 @@ static struct dentry *shmem_get_parent(struct dentry *child)
|
||||
lockdep_annotate_inode_mutex_key(inode);
|
||||
return inode;
|
||||
}
|
||||
@@ -4098,8 +4124,7 @@ static struct dentry *shmem_get_parent(struct dentry *child)
|
||||
static int shmem_match(struct inode *ino, void *vfh)
|
||||
{
|
||||
__u32 *fh = vfh;
|
||||
@@ -98,7 +99,7 @@ index 342d1bc72867..460e4c54483f 100644
|
||||
return ino->i_ino == inum && fh[0] == ino->i_generation;
|
||||
}
|
||||
|
||||
@@ -3273,14 +3299,11 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb,
|
||||
@@ -4118,14 +4143,11 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb,
|
||||
struct dentry *dentry = NULL;
|
||||
u64 inum;
|
||||
|
||||
@@ -116,7 +117,7 @@ index 342d1bc72867..460e4c54483f 100644
|
||||
if (inode) {
|
||||
dentry = shmem_find_alias(inode);
|
||||
iput(inode);
|
||||
@@ -3292,30 +3315,15 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb,
|
||||
@@ -4137,30 +4159,15 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb,
|
||||
static int shmem_encode_fh(struct inode *inode, __u32 *fh, int *len,
|
||||
struct inode *parent)
|
||||
{
|
||||
@@ -150,53 +151,48 @@ index 342d1bc72867..460e4c54483f 100644
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -3394,7 +3402,7 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param)
|
||||
@@ -4259,7 +4266,7 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param)
|
||||
break;
|
||||
case Opt_nr_inodes:
|
||||
ctx->inodes = memparse(param->string, &rest);
|
||||
- if (*rest)
|
||||
+ if (*rest || ctx->inodes < 2)
|
||||
- if (*rest || ctx->inodes > ULONG_MAX / BOGO_INODE_SIZE)
|
||||
+ if (*rest || ctx->inodes < 2 || ctx->inodes > INT_MAX)
|
||||
goto bad_value;
|
||||
ctx->seen |= SHMEM_SEEN_INODES;
|
||||
break;
|
||||
@@ -3504,7 +3512,7 @@ static int shmem_reconfigure(struct fs_context *fc)
|
||||
{
|
||||
struct shmem_options *ctx = fc->fs_private;
|
||||
struct shmem_sb_info *sbinfo = SHMEM_SB(fc->root->d_sb);
|
||||
- unsigned long inodes;
|
||||
+ int inodes;
|
||||
struct mempolicy *mpol = NULL;
|
||||
const char *err;
|
||||
|
||||
@@ -3573,7 +3581,7 @@ static int shmem_show_options(struct seq_file *seq, struct dentry *root)
|
||||
seq_printf(seq, ",size=%luk",
|
||||
sbinfo->max_blocks << (PAGE_SHIFT - 10));
|
||||
@@ -4541,7 +4548,7 @@ static int shmem_show_options(struct seq_file *seq, struct dentry *root)
|
||||
if (sbinfo->max_blocks != shmem_default_max_blocks())
|
||||
seq_printf(seq, ",size=%luk", K(sbinfo->max_blocks));
|
||||
if (sbinfo->max_inodes != shmem_default_max_inodes())
|
||||
- seq_printf(seq, ",nr_inodes=%lu", sbinfo->max_inodes);
|
||||
+ seq_printf(seq, ",nr_inodes=%d", sbinfo->max_inodes);
|
||||
if (sbinfo->mode != (0777 | S_ISVTX))
|
||||
seq_printf(seq, ",mode=%03ho", sbinfo->mode);
|
||||
if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID))
|
||||
@@ -3620,6 +3628,8 @@ static void shmem_put_super(struct super_block *sb)
|
||||
{
|
||||
struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
|
||||
|
||||
@@ -4613,6 +4620,8 @@ static void shmem_put_super(struct super_block *sb)
|
||||
#ifdef CONFIG_TMPFS_QUOTA
|
||||
shmem_disable_quotas(sb);
|
||||
#endif
|
||||
+ if (!sbinfo->idr_nouse)
|
||||
+ idr_destroy(&sbinfo->idr);
|
||||
free_percpu(sbinfo->ino_batch);
|
||||
percpu_counter_destroy(&sbinfo->used_blocks);
|
||||
mpol_put(sbinfo->mpol);
|
||||
@@ -3662,6 +3672,8 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
@@ -4657,9 +4666,11 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc)
|
||||
#else
|
||||
sb->s_flags |= SB_NOUSER;
|
||||
#endif
|
||||
+ mutex_init(&sbinfo->idr_lock);
|
||||
+ idr_init(&sbinfo->idr);
|
||||
sbinfo->max_blocks = ctx->blocks;
|
||||
sbinfo->free_inodes = sbinfo->max_inodes = ctx->inodes;
|
||||
sbinfo->max_inodes = ctx->inodes;
|
||||
- sbinfo->free_ispace = sbinfo->max_inodes * BOGO_INODE_SIZE;
|
||||
+ sbinfo->free_ispace = (unsigned long)sbinfo->max_inodes * BOGO_INODE_SIZE;
|
||||
if (sb->s_flags & SB_KERNMOUNT) {
|
||||
@@ -3779,6 +3791,15 @@ static void shmem_destroy_inodecache(void)
|
||||
kmem_cache_destroy(shmem_inode_cachep);
|
||||
sbinfo->ino_batch = alloc_percpu(ino_t);
|
||||
if (!sbinfo->ino_batch)
|
||||
@@ -4804,6 +4815,15 @@ static int shmem_error_remove_folio(struct address_space *mapping,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static __init void shmem_no_idr(struct super_block *sb)
|
||||
@@ -208,10 +204,10 @@ index 342d1bc72867..460e4c54483f 100644
|
||||
+ idr_destroy(&sbinfo->idr);
|
||||
+}
|
||||
+
|
||||
const struct address_space_operations shmem_aops = {
|
||||
static const struct address_space_operations shmem_aops = {
|
||||
.writepage = shmem_writepage,
|
||||
.set_page_dirty = __set_page_dirty_no_writeback,
|
||||
@@ -3920,6 +3941,7 @@ int __init shmem_init(void)
|
||||
.dirty_folio = noop_dirty_folio,
|
||||
@@ -4968,6 +4988,7 @@ void __init shmem_init(void)
|
||||
pr_err("Could not kern_mount tmpfs\n");
|
||||
goto out1;
|
||||
}
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
diff --git a/fs/inode.c b/fs/inode.c
|
||||
index 9abc88d7959c..82b13641423c 100644
|
||||
index 8dabb224f941..4f03eaa25cc2 100644
|
||||
--- a/fs/inode.c
|
||||
+++ b/fs/inode.c
|
||||
@@ -904,6 +904,8 @@ unsigned int get_next_ino(void)
|
||||
@@ -1070,6 +1070,8 @@ unsigned int get_next_ino(void)
|
||||
unsigned int *p = &get_cpu_var(last_ino);
|
||||
unsigned int res = *p;
|
||||
|
||||
@@ -13,7 +13,7 @@ index 9abc88d7959c..82b13641423c 100644
|
||||
#ifdef CONFIG_SMP
|
||||
if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) {
|
||||
static atomic_t shared_last_ino;
|
||||
@@ -916,7 +918,7 @@ unsigned int get_next_ino(void)
|
||||
@@ -1082,7 +1084,7 @@ unsigned int get_next_ino(void)
|
||||
res++;
|
||||
/* get_next_ino should not provide a 0 inode number */
|
||||
if (unlikely(!res))
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
+28
@@ -0,0 +1,28 @@
|
||||
From cfa62868adc134623104a759902a95bc71790614 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Giuseppe=20Ghib=C3=B2?= <ghibo@mageia.org>
|
||||
Date: Sat, 16 Dec 2023 19:50:53 +0100
|
||||
Subject: [PATCH] Pull device 0x0821 from list of device supported by rtl8812au
|
||||
drivers
|
||||
|
||||
The Realtek device with ID 0x0821 seems better supported by upstream rtl8821ae
|
||||
kernel module (see bug https://bugs.mageia.org/show_bug.cgi?id=31965).
|
||||
|
||||
---
|
||||
drivers/staging/rtl8812au/os_dep/linux/usb_intf.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c b/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c
|
||||
index be0f654f0..c019fa82b 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c
|
||||
@@ -185,7 +185,6 @@ static struct usb_device_id rtw_usb_id_tbl[] = {
|
||||
#ifdef CONFIG_RTL8821A
|
||||
/*=== Realtek demoboard ===*/
|
||||
{USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0811), .driver_info = RTL8821}, /* Default ID */
|
||||
- {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0821), .driver_info = RTL8821}, /* Default ID */
|
||||
{USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8822), .driver_info = RTL8821}, /* Default ID */
|
||||
{USB_DEVICE(USB_VENDER_ID_REALTEK, 0xA811) , .driver_info = RTL8821},/* Default ID */
|
||||
{USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0x0820, 0xff, 0xff, 0xff), .driver_info = RTL8821}, /* 8821AU */
|
||||
--
|
||||
2.41.0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,22 @@
|
||||
diff -up linux-6.12/drivers/staging/rtl8812au/core/rtw_mlme_ext.c.fixwarning linux-6.12/drivers/staging/rtl8812au/core/rtw_mlme_ext.c
|
||||
--- linux-6.12/drivers/staging/rtl8812au/core/rtw_mlme_ext.c.fixwarning 2024-11-20 22:55:13.263847617 +0100
|
||||
+++ linux-6.12/drivers/staging/rtl8812au/core/rtw_mlme_ext.c 2024-11-20 22:56:20.104794574 +0100
|
||||
@@ -2152,13 +2152,15 @@ unsigned int OnAuth(_adapter *padapter,
|
||||
if (rtw_is_list_empty(&pstat->asoc_list) == _FALSE) {
|
||||
rtw_list_delete(&pstat->asoc_list);
|
||||
pstapriv->asoc_list_cnt--;
|
||||
- if (pstat->expire_to > 0)
|
||||
- ;/* TODO: STA re_auth within expire_to */
|
||||
+ if (pstat->expire_to > 0) {
|
||||
+ ; /* TODO: STA re_auth within expire_to */
|
||||
+ }
|
||||
}
|
||||
_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);
|
||||
|
||||
- if (seq == 1)
|
||||
+ if (seq == 1) {
|
||||
; /* TODO: STA re_auth and auth timeout */
|
||||
+ }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,188 @@
|
||||
From 61116d468dd551124c1ae2c01fff5da99d787fad Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Giuseppe=20Ghib=C3=B2?= <ghibo@mageia.org>
|
||||
Date: Thu, 21 Nov 2024 15:47:58 +0100
|
||||
Subject: [PATCH] rtl8812au: add missed prototypes
|
||||
|
||||
---
|
||||
drivers/staging/rtl8812au/core/rtw_br_ext.c | 2 ++
|
||||
drivers/staging/rtl8812au/core/rtw_p2p.c | 1 +
|
||||
drivers/staging/rtl8812au/core/rtw_xmit.c | 1 +
|
||||
.../hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c | 7 +++++++
|
||||
.../hal/phydm/halrf/rtl8814a/halrf_8814a_ce.c | 21 ++++++++++++++++++-
|
||||
.../staging/rtl8812au/hal/phydm/phydm_ccx.c | 1 +
|
||||
.../rtl8812au/os_dep/linux/ioctl_cfg80211.c | 12 +++++++++++
|
||||
.../staging/rtl8812au/os_dep/linux/rtw_proc.c | 1 +
|
||||
.../staging/rtl8812au/os_dep/linux/usb_intf.c | 2 ++
|
||||
9 files changed, 47 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/core/rtw_br_ext.c b/drivers/staging/rtl8812au/core/rtw_br_ext.c
|
||||
index 955a50912..283676d36 100644
|
||||
--- a/drivers/staging/rtl8812au/core/rtw_br_ext.c
|
||||
+++ b/drivers/staging/rtl8812au/core/rtw_br_ext.c
|
||||
@@ -1369,6 +1369,8 @@ void dhcp_flag_bcast(_adapter *priv, struct sk_buff *skb)
|
||||
}
|
||||
|
||||
|
||||
+void *scdb_findEntry(_adapter *priv, unsigned char *macAddr,
|
||||
+ unsigned char *ipAddr);
|
||||
void *scdb_findEntry(_adapter *priv, unsigned char *macAddr,
|
||||
unsigned char *ipAddr)
|
||||
{
|
||||
diff --git a/drivers/staging/rtl8812au/core/rtw_p2p.c b/drivers/staging/rtl8812au/core/rtw_p2p.c
|
||||
index 167dd067f..c560d1712 100644
|
||||
--- a/drivers/staging/rtl8812au/core/rtw_p2p.c
|
||||
+++ b/drivers/staging/rtl8812au/core/rtw_p2p.c
|
||||
@@ -3898,6 +3898,7 @@ void rtw_xframe_chk_wfd_ie(struct xmit_frame *xframe)
|
||||
#endif
|
||||
}
|
||||
|
||||
+u8 *dump_p2p_attr_ch_list(u8 *p2p_ie, uint p2p_ielen, u8 *buf, u32 buf_len);
|
||||
u8 *dump_p2p_attr_ch_list(u8 *p2p_ie, uint p2p_ielen, u8 *buf, u32 buf_len)
|
||||
{
|
||||
uint attr_contentlen = 0;
|
||||
diff --git a/drivers/staging/rtl8812au/core/rtw_xmit.c b/drivers/staging/rtl8812au/core/rtw_xmit.c
|
||||
index 0b97e5099..e40c0aecc 100644
|
||||
--- a/drivers/staging/rtl8812au/core/rtw_xmit.c
|
||||
+++ b/drivers/staging/rtl8812au/core/rtw_xmit.c
|
||||
@@ -3766,6 +3766,7 @@ static struct xmit_frame *get_one_xmitframe(struct xmit_priv *pxmitpriv, struct
|
||||
return pxmitframe;
|
||||
}
|
||||
|
||||
+struct xmit_frame *rtw_get_xframe(struct xmit_priv *pxmitpriv, int *num_frame);
|
||||
struct xmit_frame *rtw_get_xframe(struct xmit_priv *pxmitpriv, int *num_frame)
|
||||
{
|
||||
_irqL irqL0;
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c b/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c
|
||||
index a66721465..e2113e37a 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c
|
||||
@@ -1334,6 +1334,13 @@ void phy_lc_calibrate_8812a(void *dm_void)
|
||||
_phy_lc_calibrate_8812a(dm, true);
|
||||
}
|
||||
|
||||
+void _phy_set_rf_path_switch_8812a(
|
||||
+#if ((DM_ODM_SUPPORT_TYPE & ODM_AP) || (DM_ODM_SUPPORT_TYPE == ODM_CE))
|
||||
+ struct dm_struct *dm,
|
||||
+#else
|
||||
+ void *adapter,
|
||||
+#endif
|
||||
+ boolean is_main, boolean is2T);
|
||||
void _phy_set_rf_path_switch_8812a(
|
||||
#if ((DM_ODM_SUPPORT_TYPE & ODM_AP) || (DM_ODM_SUPPORT_TYPE == ODM_CE))
|
||||
struct dm_struct *dm,
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8814a/halrf_8814a_ce.c b/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8814a/halrf_8814a_ce.c
|
||||
index 41ce0a6dd..ae060a648 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8814a/halrf_8814a_ce.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8814a/halrf_8814a_ce.c
|
||||
@@ -450,7 +450,17 @@ _phy_lc_calibrate_8814a(
|
||||
|
||||
|
||||
VOID
|
||||
-phy_APCalibrate_8814A(
|
||||
+ phy_APCalibrate_8814A(
|
||||
+#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||
+ IN struct dm_struct * pDM_Odm,
|
||||
+#else
|
||||
+ IN PADAPTER pAdapter,
|
||||
+#endif
|
||||
+ IN s1Byte delta,
|
||||
+ IN BOOLEAN is2T
|
||||
+ );
|
||||
+VOID
|
||||
+ phy_APCalibrate_8814A(
|
||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||
IN struct dm_struct * pDM_Odm,
|
||||
#else
|
||||
@@ -545,6 +555,15 @@ BOOLEAN PHY_QueryRFPathSwitch_8814A(
|
||||
}
|
||||
|
||||
|
||||
+VOID _phy_SetRFPathSwitch_8814A(
|
||||
+#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||
+ IN struct dm_struct * pDM_Odm,
|
||||
+#else
|
||||
+ IN PADAPTER pAdapter,
|
||||
+#endif
|
||||
+ IN BOOLEAN bMain,
|
||||
+ IN BOOLEAN is2T
|
||||
+ );
|
||||
VOID _phy_SetRFPathSwitch_8814A(
|
||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||
IN struct dm_struct * pDM_Odm,
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/phydm_ccx.c b/drivers/staging/rtl8812au/hal/phydm/phydm_ccx.c
|
||||
index e0f42c0be..fe69c19b2 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/phydm_ccx.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/phydm_ccx.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "mp_precomp.h"
|
||||
#include "phydm_precomp.h"
|
||||
|
||||
+void phydm_ccx_hw_restart(void *dm_void);
|
||||
void phydm_ccx_hw_restart(void *dm_void)
|
||||
/*@Will Restart NHM/CLM/FAHM simultaneously*/
|
||||
{
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c b/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
index ae4202ad4..c0f563430 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
@@ -534,6 +534,7 @@ void rtw_5g_rates_init(struct ieee80211_rate *rates)
|
||||
);
|
||||
}
|
||||
|
||||
+struct ieee80211_supported_band *rtw_spt_band_alloc(BAND_TYPE band);
|
||||
struct ieee80211_supported_band *rtw_spt_band_alloc(BAND_TYPE band)
|
||||
{
|
||||
struct ieee80211_supported_band *spt_band = NULL;
|
||||
@@ -2083,6 +2084,16 @@ static int cfg80211_rtw_del_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int cfg80211_rtw_set_default_key(struct wiphy *wiphy,
|
||||
+ struct net_device *ndev,
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
|
||||
+ int link_id,
|
||||
+#endif
|
||||
+ u8 key_index
|
||||
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)) || defined(COMPAT_KERNEL_RELEASE)
|
||||
+ , bool unicast, bool multicast
|
||||
+ #endif
|
||||
+);
|
||||
static int cfg80211_rtw_set_default_key(struct wiphy *wiphy,
|
||||
struct net_device *ndev,
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
|
||||
@@ -5956,6 +5967,7 @@ static int cfg80211_rtw_change_station(struct wiphy *wiphy, struct net_device *n
|
||||
return ret;
|
||||
}
|
||||
|
||||
+struct sta_info *rtw_sta_info_get_by_idx(struct sta_priv *pstapriv, const int idx, u8 *asoc_list_num);
|
||||
struct sta_info *rtw_sta_info_get_by_idx(struct sta_priv *pstapriv, const int idx, u8 *asoc_list_num)
|
||||
{
|
||||
_list *phead, *plist;
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/rtw_proc.c b/drivers/staging/rtl8812au/os_dep/linux/rtw_proc.c
|
||||
index db1177c3a..3b9246bc9 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/rtw_proc.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/rtw_proc.c
|
||||
@@ -4446,6 +4446,7 @@ static const struct file_operations rtw_odm_proc_sseq_ops = {
|
||||
};
|
||||
#endif
|
||||
|
||||
+struct proc_dir_entry *rtw_odm_proc_init(struct net_device *dev);
|
||||
struct proc_dir_entry *rtw_odm_proc_init(struct net_device *dev)
|
||||
{
|
||||
struct proc_dir_entry *dir_odm = NULL;
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c b/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c
|
||||
index 915ef6476..ae2a5a0b9 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c
|
||||
@@ -1206,6 +1206,8 @@ extern void rtd2885_wlan_netlink_sendMsg(char *action_string, char *name);
|
||||
|
||||
_adapter *rtw_sw_export = NULL;
|
||||
|
||||
+_adapter *rtw_usb_primary_adapter_init(struct dvobj_priv *dvobj,
|
||||
+ struct usb_interface *pusb_intf);
|
||||
_adapter *rtw_usb_primary_adapter_init(struct dvobj_priv *dvobj,
|
||||
struct usb_interface *pusb_intf)
|
||||
{
|
||||
--
|
||||
2.41.1
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
From a9d9038b7a15077395013f1954665656959c81b8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Giuseppe=20Ghib=C3=B2?= <ghibo@mageia.org>
|
||||
From: Your Name <you@example.com>
|
||||
Date: Thu, 21 Nov 2024 15:53:01 +0100
|
||||
Subject: [PATCH 6/8] rtl8812au: add suggested braces around empty body in an
|
||||
else statement
|
||||
|
||||
---
|
||||
drivers/staging/rtl8812au/os_dep/linux/recv_linux.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/recv_linux.c b/drivers/staging/rtl8812au/os_dep/linux/recv_linux.c
|
||||
index 5637e9970..051abba70 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/recv_linux.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/recv_linux.c
|
||||
@@ -531,10 +531,12 @@ void rtw_os_recv_indicate_pkt(_adapter *padapter, _pkt *pkt, union recv_frame *r
|
||||
#endif /* CONFIG_RTW_NAPI */
|
||||
|
||||
ret = rtw_netif_rx(padapter->pnetdev, pkt);
|
||||
- if (ret == NET_RX_SUCCESS)
|
||||
+ if (ret == NET_RX_SUCCESS) {
|
||||
DBG_COUNTER(padapter->rx_logs.os_netif_ok);
|
||||
- else
|
||||
+ }
|
||||
+ else {
|
||||
DBG_COUNTER(padapter->rx_logs.os_netif_err);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.41.1
|
||||
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
From e7f5d03d8bde8f104ed06ad0946e2e40eaf51094 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Giuseppe=20Ghib=C3=B2?= <ghibo@mageia.org>
|
||||
Date: Thu, 21 Nov 2024 16:06:25 +0100
|
||||
Subject: [PATCH 7/8] rtl8812au: add suggested braces around empty body in an
|
||||
else statement
|
||||
|
||||
---
|
||||
drivers/staging/rtl8812au/hal/phydm/phydm_debug.c | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/phydm_debug.c b/drivers/staging/rtl8812au/hal/phydm/phydm_debug.c
|
||||
index bab92632e..a3e8bc48e 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/phydm_debug.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/phydm_debug.c
|
||||
@@ -2222,10 +2222,12 @@ void phydm_basic_dbg_message(void *dm_void)
|
||||
PHYDM_DBG(dm, DBG_CMN, "[%s] System up time: ((%d sec))---->\n",
|
||||
__func__, dm->phydm_sys_up_time);
|
||||
|
||||
- if (dm->is_linked)
|
||||
+ if (dm->is_linked) {
|
||||
phydm_basic_dbg_msg_linked(dm);
|
||||
- else
|
||||
+ }
|
||||
+ else {
|
||||
PHYDM_DBG(dm, DBG_CMN, "No Link !!!\n");
|
||||
+ }
|
||||
|
||||
PHYDM_DBG(dm, DBG_CMN, "[CCA Cnt] {CCK, OFDM, Total} = {%d, %d, %d}\n",
|
||||
fa_t->cnt_cck_cca, fa_t->cnt_ofdm_cca, fa_t->cnt_cca_all);
|
||||
@@ -4491,10 +4493,11 @@ void phydm_fw_trace_handler_code(void *dm_void, u8 *buffer, u8 cmd_len)
|
||||
u16 content_3 = (((u16)buffer[9]) << 8) | ((u16)buffer[8]);
|
||||
u16 content_4 = (((u16)buffer[11]) << 8) | ((u16)buffer[10]);
|
||||
|
||||
- if (cmd_len > 12)
|
||||
+ if (cmd_len > 12) {
|
||||
PHYDM_DBG(dm, DBG_FW_TRACE,
|
||||
"[FW Msg] Invalid cmd length (( %d )) >12\n",
|
||||
cmd_len);
|
||||
+ }
|
||||
/*@--------------------------------------------*/
|
||||
#ifdef CONFIG_RA_FW_DBG_CODE
|
||||
if (function == RATE_DECISION) {
|
||||
--
|
||||
2.41.1
|
||||
|
||||
+311
@@ -0,0 +1,311 @@
|
||||
From 22b4d5685d828b85d9fc80bfa3d8c5e97b289224 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Giuseppe=20Ghib=C3=B2?= <ghibo@mageia.org>
|
||||
Date: Thu, 21 Nov 2024 16:27:10 +0100
|
||||
Subject: [PATCH 8/8] rtl8812au: add suggested braces around empty body in an
|
||||
else statement
|
||||
|
||||
---
|
||||
.../rtl8812au/hal/phydm/halrf/halphyrf_ce.c | 3 ++-
|
||||
.../staging/rtl8812au/hal/phydm/halrf/halrf.c | 3 ++-
|
||||
.../rtl8812au/hal/phydm/halrf/halrf_kfree.c | 18 ++++++++++++------
|
||||
.../hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c | 3 ++-
|
||||
.../rtl8812au/hal/phydm/phydm_beamforming.c | 6 ++++--
|
||||
.../rtl8812au/hal/phydm/phydm_cfotracking.c | 6 ++++--
|
||||
.../staging/rtl8812au/hal/phydm/phydm_psd.c | 3 ++-
|
||||
.../staging/rtl8812au/hal/phydm/phydm_rainfo.c | 6 ++++--
|
||||
.../rtl8812au/hal/phydm/txbf/halcomtxbf.c | 15 ++++++++++-----
|
||||
.../rtl8812au/hal/phydm/txbf/haltxbfjaguar.c | 3 ++-
|
||||
10 files changed, 44 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/halrf/halphyrf_ce.c b/drivers/staging/rtl8812au/hal/phydm/halrf/halphyrf_ce.c
|
||||
index 4443c7289..3b05d87c8 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/halrf/halphyrf_ce.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/halrf/halphyrf_ce.c
|
||||
@@ -478,9 +478,10 @@ void odm_txpowertracking_callback_thermal_meter(void *adapter)
|
||||
|
||||
/*@4 3. Initialize ThermalValues of rf_calibrate_info*/
|
||||
|
||||
- if (cali_info->is_reloadtxpowerindex)
|
||||
+ if (cali_info->is_reloadtxpowerindex) {
|
||||
RF_DBG(dm, DBG_RF_TX_PWR_TRACK,
|
||||
"reload ofdm index for band switch\n");
|
||||
+ }
|
||||
|
||||
/*@4 4. Calculate average thermal meter*/
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/halrf/halrf.c b/drivers/staging/rtl8812au/hal/phydm/halrf/halrf.c
|
||||
index 09ab5bae9..609333db8 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/halrf/halrf.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/halrf/halrf.c
|
||||
@@ -2270,8 +2270,9 @@ boolean halrf_compare(void *dm_void, u32 value)
|
||||
else if (value < 0x200 && value > 0x64)
|
||||
fail = true;
|
||||
|
||||
- if (fail)
|
||||
+ if (fail) {
|
||||
RF_DBG(dm, DBG_RF_DACK, "[DACK]overflow!!!!!!!!!!!!!!!");
|
||||
+ }
|
||||
return fail;
|
||||
}
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/halrf/halrf_kfree.c b/drivers/staging/rtl8812au/hal/phydm/halrf/halrf_kfree.c
|
||||
index 773364310..a4e3504a3 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/halrf/halrf_kfree.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/halrf/halrf_kfree.c
|
||||
@@ -148,9 +148,10 @@ void phydm_get_thermal_trim_offset_8821c(void *dm_void)
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8821c thermal trim flag:0x%02x\n",
|
||||
power_trim_info->flag);
|
||||
|
||||
- if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON)
|
||||
+ if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) {
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8821c thermal:%d\n",
|
||||
power_trim_info->thermal);
|
||||
+ }
|
||||
}
|
||||
|
||||
void phydm_get_power_trim_offset_8821c(void *dm_void);
|
||||
@@ -281,9 +282,10 @@ void phydm_get_thermal_trim_offset_8822b(void *dm_void)
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8822b thermal trim flag:0x%02x\n",
|
||||
power_trim_info->flag);
|
||||
|
||||
- if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON)
|
||||
+ if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) {
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8822b thermal:%d\n",
|
||||
power_trim_info->thermal);
|
||||
+ }
|
||||
}
|
||||
|
||||
void phydm_get_power_trim_offset_8822b(void *dm_void);
|
||||
@@ -532,9 +534,10 @@ void phydm_get_thermal_trim_offset_8710b(void *dm_void)
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8710b thermal trim flag:0x%02x\n",
|
||||
power_trim_info->flag);
|
||||
|
||||
- if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON)
|
||||
+ if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) {
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8710b thermal:%d\n",
|
||||
power_trim_info->thermal);
|
||||
+ }
|
||||
}
|
||||
|
||||
void phydm_get_power_trim_offset_8710b(void *dm_void);
|
||||
@@ -559,10 +562,11 @@ void phydm_get_power_trim_offset_8710b(void *dm_void)
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8710b power trim flag:0x%02x\n",
|
||||
power_trim_info->flag);
|
||||
|
||||
- if (power_trim_info->flag & KFREE_FLAG_ON)
|
||||
+ if (power_trim_info->flag & KFREE_FLAG_ON) {
|
||||
RF_DBG(dm, DBG_RF_MP,
|
||||
"[kfree] 8710b power_trim_data->bb_gain[0][0]=0x%X\n",
|
||||
power_trim_info->bb_gain[0][0]);
|
||||
+ }
|
||||
}
|
||||
|
||||
void phydm_set_kfree_to_rf_8710b(void *dm_void, u8 e_rf_path, u8 data);
|
||||
@@ -620,9 +624,10 @@ void phydm_get_thermal_trim_offset_8192f(void *dm_void)
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8192f thermal trim flag:0x%02x\n",
|
||||
power_trim_info->flag);
|
||||
|
||||
- if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON)
|
||||
+ if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) {
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8192f thermal:%d\n",
|
||||
power_trim_info->thermal);
|
||||
+ }
|
||||
}
|
||||
|
||||
void phydm_get_power_trim_offset_8192f(void *dm_void);
|
||||
@@ -799,8 +804,9 @@ void phydm_get_thermal_trim_offset_8198f(void *dm_void)
|
||||
pg_therm = pg_therm & 0x1f;
|
||||
if ((pg_therm & BIT(0)) == 0)
|
||||
power_trim_info->thermal = (-1 * (pg_therm >> 1));
|
||||
- else
|
||||
+ else {
|
||||
power_trim_info->thermal = (pg_therm >> 1);
|
||||
+ }
|
||||
|
||||
power_trim_info->flag |= KFREE_FLAG_THERMAL_K_ON;
|
||||
}
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c b/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c
|
||||
index e2113e37a..a006d7e74 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c
|
||||
@@ -1323,8 +1323,9 @@ void phy_iq_calibrate_8812a(void *dm_void, boolean is_recovery)
|
||||
if (dm->rf_calibrate_info.is_iqk_in_progress)
|
||||
RF_DBG(dm, DBG_RF_IQK,
|
||||
"== FW IQK TIMEOUT (Still in progress after 500ms) ==\n");
|
||||
- } else
|
||||
+ } else {
|
||||
_phy_iq_calibrate_8812a(dm, *dm->channel);
|
||||
+ }
|
||||
}
|
||||
|
||||
void phy_lc_calibrate_8812a(void *dm_void)
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/phydm_beamforming.c b/drivers/staging/rtl8812au/hal/phydm/phydm_beamforming.c
|
||||
index 4a770aa72..952b5600b 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/phydm_beamforming.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/phydm_beamforming.c
|
||||
@@ -1337,10 +1337,11 @@ beamforming_init_entry(void *dm_void, u16 sta_idx, u8 *bfer_bfee_idx,
|
||||
|
||||
if (beamformer_entry == NULL) {
|
||||
beamformer_entry = beamforming_add_bfer_entry(dm, sta, beamform_cap, num_of_sounding_dim, &bfer_idx);
|
||||
- if (beamformer_entry == NULL)
|
||||
+ if (beamformer_entry == NULL) {
|
||||
PHYDM_DBG(dm, DBG_TXBF,
|
||||
"[%s]Not enough BFer entry!!!!!\n",
|
||||
__func__);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1781,10 +1782,11 @@ void beamforming_timer_callback(
|
||||
#endif
|
||||
if (ret)
|
||||
ret = beamforming_start_sw(dm, sound_info->sound_idx, sound_info->sound_mode, sound_info->sound_bw);
|
||||
- else
|
||||
+ else {
|
||||
PHYDM_DBG(dm, DBG_TXBF,
|
||||
"%s, Error value return from BeamformingStart_V2\n",
|
||||
__func__);
|
||||
+ }
|
||||
|
||||
if (beam_info->beamformee_su_cnt != 0 || beam_info->beamformee_mu_cnt > 1) {
|
||||
if (sound_info->sound_mode == SOUNDING_SW_VHT_TIMER || sound_info->sound_mode == SOUNDING_SW_HT_TIMER)
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/phydm_cfotracking.c b/drivers/staging/rtl8812au/hal/phydm/phydm_cfotracking.c
|
||||
index 8aac6b094..d88d7a6c0 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/phydm_cfotracking.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/phydm_cfotracking.c
|
||||
@@ -213,11 +213,13 @@ void phydm_set_crystal_cap(void *dm_void, u8 crystal_cap)
|
||||
if (cfo_track->crystal_cap == crystal_cap)
|
||||
return;
|
||||
|
||||
- if (phydm_set_crystal_cap_reg(dm, crystal_cap))
|
||||
+ if (phydm_set_crystal_cap_reg(dm, crystal_cap)) {
|
||||
PHYDM_DBG(dm, DBG_CFO_TRK, "Set crystal_cap = 0x%x\n",
|
||||
cfo_track->crystal_cap);
|
||||
- else
|
||||
+ }
|
||||
+ else {
|
||||
PHYDM_DBG(dm, DBG_CFO_TRK, "Set fail\n");
|
||||
+ }
|
||||
}
|
||||
|
||||
boolean
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/phydm_psd.c b/drivers/staging/rtl8812au/hal/phydm/phydm_psd.c
|
||||
index 458677b59..33f715bcc 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/phydm_psd.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/phydm_psd.c
|
||||
@@ -199,9 +199,10 @@ u8 phydm_psd(void *dm_void, u32 igi, u16 start_point, u16 stop_point)
|
||||
if (dm->support_ic_type & ODM_IC_JGR3_SERIES)
|
||||
PHYDM_DBG(dm, ODM_COMP_API, "0x1d70=((0x%x))\n",
|
||||
odm_get_bb_reg(dm, R_0x1d70, MASKDWORD));
|
||||
- else
|
||||
+ else {
|
||||
PHYDM_DBG(dm, ODM_COMP_API, "0xc50=((0x%x))\n",
|
||||
odm_get_bb_reg(dm, R_0xc50, MASKDWORD));
|
||||
+ }
|
||||
|
||||
PHYDM_DBG(dm, ODM_COMP_API, "RF0x18=((0x%x))\n",
|
||||
odm_get_rf_reg(dm, RF_PATH_A, RF_0x18, RFREG_MASK));
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/phydm_rainfo.c b/drivers/staging/rtl8812au/hal/phydm/phydm_rainfo.c
|
||||
index 2c24b9be9..ca341c827 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/phydm_rainfo.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/phydm_rainfo.c
|
||||
@@ -443,8 +443,9 @@ void phydm_c2h_ra_report_handler(void *dm_void, u8 *cmd_buf, u8 cmd_len)
|
||||
PHYDM_DBG(dm, DBG_RA, "Rate Back\n");
|
||||
else if (cmd_buf[3] == 4)
|
||||
PHYDM_DBG(dm, DBG_RA, "Start rate by RSSI\n");
|
||||
- else if (cmd_buf[3] == 5)
|
||||
+ else if (cmd_buf[3] == 5) {
|
||||
PHYDM_DBG(dm, DBG_RA, "Try rate\n");
|
||||
+ }
|
||||
}
|
||||
phydm_print_rate_2_buff(dm, rate, dbg_buf, PHYDM_SNPRINT_SIZE);
|
||||
PHYDM_DBG(dm, DBG_RA, "Tx Rate=%s (%d)", dbg_buf, rate);
|
||||
@@ -829,8 +830,9 @@ u8 phydm_get_tx_stream_num(void *dm_void, enum rf_type type)
|
||||
tx_num = 3;
|
||||
else if (type == RF_4T4R)
|
||||
tx_num = 4;
|
||||
- else
|
||||
+ else {
|
||||
PHYDM_DBG(dm, DBG_RA, "[Warrning] no mimo_type is found\n");
|
||||
+ }
|
||||
|
||||
return tx_num;
|
||||
}
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/txbf/halcomtxbf.c b/drivers/staging/rtl8812au/hal/phydm/txbf/halcomtxbf.c
|
||||
index 4329dcaee..286105ec0 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/txbf/halcomtxbf.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/txbf/halcomtxbf.c
|
||||
@@ -43,8 +43,9 @@ void hal_com_txbf_config_gtab(
|
||||
{
|
||||
struct dm_struct *dm = (struct dm_struct *)dm_void;
|
||||
|
||||
- if (dm->support_ic_type & ODM_RTL8822B)
|
||||
+ if (dm->support_ic_type & ODM_RTL8822B) {
|
||||
hal_txbf_8822b_config_gtab(dm);
|
||||
+ }
|
||||
}
|
||||
|
||||
void phydm_beamform_set_sounding_enter(
|
||||
@@ -206,8 +207,9 @@ void hal_com_txbf_enter_work_item_callback(
|
||||
hal_txbf_8192e_enter(dm, idx);
|
||||
else if (dm->support_ic_type & ODM_RTL8814A)
|
||||
hal_txbf_8814a_enter(dm, idx);
|
||||
- else if (dm->support_ic_type & ODM_RTL8822B)
|
||||
+ else if (dm->support_ic_type & ODM_RTL8822B) {
|
||||
hal_txbf_8822b_enter(dm, idx);
|
||||
+ }
|
||||
}
|
||||
|
||||
void hal_com_txbf_leave_work_item_callback(
|
||||
@@ -236,8 +238,9 @@ void hal_com_txbf_leave_work_item_callback(
|
||||
hal_txbf_8192e_leave(dm, idx);
|
||||
else if (dm->support_ic_type & ODM_RTL8814A)
|
||||
hal_txbf_8814a_leave(dm, idx);
|
||||
- else if (dm->support_ic_type & ODM_RTL8822B)
|
||||
+ else if (dm->support_ic_type & ODM_RTL8822B) {
|
||||
hal_txbf_8822b_leave(dm, idx);
|
||||
+ }
|
||||
}
|
||||
|
||||
void hal_com_txbf_fw_ndpa_work_item_callback(
|
||||
@@ -265,8 +268,9 @@ void hal_com_txbf_fw_ndpa_work_item_callback(
|
||||
hal_txbf_8192e_fw_tx_bf(dm, idx);
|
||||
else if (dm->support_ic_type & ODM_RTL8814A)
|
||||
hal_txbf_8814a_fw_txbf(dm, idx);
|
||||
- else if (dm->support_ic_type & ODM_RTL8822B)
|
||||
+ else if (dm->support_ic_type & ODM_RTL8822B) {
|
||||
hal_txbf_8822b_fw_txbf(dm, idx);
|
||||
+ }
|
||||
}
|
||||
|
||||
void hal_com_txbf_clk_work_item_callback(
|
||||
@@ -363,8 +367,9 @@ void hal_com_txbf_status_work_item_callback(
|
||||
hal_txbf_8192e_status(dm, idx);
|
||||
else if (dm->support_ic_type & ODM_RTL8814A)
|
||||
hal_txbf_8814a_status(dm, idx);
|
||||
- else if (dm->support_ic_type & ODM_RTL8822B)
|
||||
+ else if (dm->support_ic_type & ODM_RTL8822B) {
|
||||
hal_txbf_8822b_status(dm, idx);
|
||||
+ }
|
||||
}
|
||||
|
||||
void hal_com_txbf_reset_tx_path_work_item_callback(
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/txbf/haltxbfjaguar.c b/drivers/staging/rtl8812au/hal/phydm/txbf/haltxbfjaguar.c
|
||||
index c42fa53a6..78bb399d9 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/txbf/haltxbfjaguar.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/txbf/haltxbfjaguar.c
|
||||
@@ -145,9 +145,10 @@ void hal_txbf_jaguar_download_ndpa(
|
||||
dl_bcn_count++;
|
||||
} while (!(bcn_valid_reg & BIT(0)) && dl_bcn_count < 5);
|
||||
|
||||
- if (!(bcn_valid_reg & BIT(0)))
|
||||
+ if (!(bcn_valid_reg & BIT(0))) {
|
||||
PHYDM_DBG(dm, DBG_TXBF, "%s Download RSVD page failed!\n",
|
||||
__func__);
|
||||
+ }
|
||||
|
||||
/*TDECTRL[15:8] 0x209[7:0] = 0xF6 Beacon Head for TXDMA*/
|
||||
odm_write_1byte(dm, REG_TDECTRL_8812A + 1, tx_page_bndy);
|
||||
--
|
||||
2.41.1
|
||||
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
From f9a18119d2a8f5bd4c35197c89c60305d58d3abd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Giuseppe=20Ghib=C3=B2?= <ghibo@mageia.org>
|
||||
Date: Thu, 21 Nov 2024 17:03:25 +0100
|
||||
Subject: [PATCH 09/10] rtl8812au: add suggested braces around empty body in an
|
||||
else statement
|
||||
|
||||
---
|
||||
drivers/staging/rtl8812au/core/rtw_recv.c | 3 ++-
|
||||
drivers/staging/rtl8812au/core/rtw_xmit.c | 3 ++-
|
||||
drivers/staging/rtl8812au/hal/phydm/halrf/halrf_kfree.c | 3 ++-
|
||||
.../rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c | 3 ++-
|
||||
drivers/staging/rtl8812au/hal/phydm/phydm_beamforming.c | 3 ++-
|
||||
5 files changed, 10 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/core/rtw_recv.c b/drivers/staging/rtl8812au/core/rtw_recv.c
|
||||
index ed2bf605c..bdbc146ca 100644
|
||||
--- a/drivers/staging/rtl8812au/core/rtw_recv.c
|
||||
+++ b/drivers/staging/rtl8812au/core/rtw_recv.c
|
||||
@@ -2404,8 +2404,9 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame)
|
||||
dump_rx_packet(ptr);
|
||||
}
|
||||
#endif
|
||||
- } else
|
||||
+ } else {
|
||||
DBG_COUNTER(adapter->rx_logs.core_rx_pre_data_handled);
|
||||
+ }
|
||||
break;
|
||||
default:
|
||||
DBG_COUNTER(adapter->rx_logs.core_rx_pre_unknown);
|
||||
diff --git a/drivers/staging/rtl8812au/core/rtw_xmit.c b/drivers/staging/rtl8812au/core/rtw_xmit.c
|
||||
index e40c0aecc..12a2d5d79 100644
|
||||
--- a/drivers/staging/rtl8812au/core/rtw_xmit.c
|
||||
+++ b/drivers/staging/rtl8812au/core/rtw_xmit.c
|
||||
@@ -1374,8 +1374,9 @@ static s32 update_attrib(_adapter *padapter, _pkt *pkt, struct pkt_attrib *pattr
|
||||
_rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
DBG_COUNTER(padapter->tx_logs.core_tx_upd_attrib_ap);
|
||||
- } else
|
||||
+ } else {
|
||||
DBG_COUNTER(padapter->tx_logs.core_tx_upd_attrib_unknown);
|
||||
+ }
|
||||
|
||||
get_sta_info:
|
||||
bmcast = IS_MCAST(pattrib->ra);
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/halrf/halrf_kfree.c b/drivers/staging/rtl8812au/hal/phydm/halrf/halrf_kfree.c
|
||||
index a4e3504a3..c31566d70 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/halrf/halrf_kfree.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/halrf/halrf_kfree.c
|
||||
@@ -814,9 +814,10 @@ void phydm_get_thermal_trim_offset_8198f(void *dm_void)
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8198f thermal trim flag:0x%02x\n",
|
||||
power_trim_info->flag);
|
||||
|
||||
- if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON)
|
||||
+ if (power_trim_info->flag & KFREE_FLAG_THERMAL_K_ON) {
|
||||
RF_DBG(dm, DBG_RF_MP, "[kfree] 8198f thermal:%d\n",
|
||||
power_trim_info->thermal);
|
||||
+ }
|
||||
}
|
||||
|
||||
void phydm_get_power_trim_offset_8198f(void *dm_void);
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c b/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c
|
||||
index a006d7e74..4f11b8223 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/halrf/rtl8812a/halrf_8812a_ce.c
|
||||
@@ -1320,9 +1320,10 @@ void phy_iq_calibrate_8812a(void *dm_void, boolean is_recovery)
|
||||
if (dm->fw_offload_ability & PHYDM_RF_IQK_OFFLOAD) {
|
||||
_phy_iq_calibrate_by_fw_8812a(dm);
|
||||
phydm_iqk_wait(dm, 500);
|
||||
- if (dm->rf_calibrate_info.is_iqk_in_progress)
|
||||
+ if (dm->rf_calibrate_info.is_iqk_in_progress) {
|
||||
RF_DBG(dm, DBG_RF_IQK,
|
||||
"== FW IQK TIMEOUT (Still in progress after 500ms) ==\n");
|
||||
+ }
|
||||
} else {
|
||||
_phy_iq_calibrate_8812a(dm, *dm->channel);
|
||||
}
|
||||
diff --git a/drivers/staging/rtl8812au/hal/phydm/phydm_beamforming.c b/drivers/staging/rtl8812au/hal/phydm/phydm_beamforming.c
|
||||
index 952b5600b..28ab2dd54 100644
|
||||
--- a/drivers/staging/rtl8812au/hal/phydm/phydm_beamforming.c
|
||||
+++ b/drivers/staging/rtl8812au/hal/phydm/phydm_beamforming.c
|
||||
@@ -1196,10 +1196,11 @@ void phydm_beamforming_notify(
|
||||
/*@if (sound_info->sound_mode == SOUNDING_SW_VHT_TIMER || sound_info->sound_mode == SOUNDING_SW_HT_TIMER)
|
||||
odm_set_timer(dm, &beam_info->beamforming_timer, sound_info->sound_period);*/
|
||||
odm_set_timer(dm, &beam_info->beamforming_timer, 1000); /*@Do MU sounding every 1sec*/
|
||||
- } else
|
||||
+ } else {
|
||||
PHYDM_DBG(dm, DBG_TXBF,
|
||||
"%s: Less or larger than 2 MU STAs, not to set timer\n",
|
||||
__func__);
|
||||
+ }
|
||||
break;
|
||||
|
||||
case BEAMFORMEE_NOTIFY_DELETE_MU:
|
||||
--
|
||||
2.41.1
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
From 18bb3090b6c0876842813ac10d1822412f51e97e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Giuseppe=20Ghib=C3=B2?= <ghibo@mageia.org>
|
||||
Date: Thu, 21 Nov 2024 17:07:41 +0100
|
||||
Subject: [PATCH 10/10] rtl8812au: add missed prototypes
|
||||
|
||||
---
|
||||
drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c | 7 +++++++
|
||||
drivers/staging/rtl8812au/os_dep/linux/usb_ops_linux.c | 1 +
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c b/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
index c0f563430..72538365a 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
@@ -2151,6 +2151,12 @@
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
|
||||
int link_id,
|
||||
#endif
|
||||
+ u8 key_index);
|
||||
+int cfg80211_rtw_set_default_mgmt_key(struct wiphy *wiphy,
|
||||
+ struct net_device *ndev,
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
|
||||
+ int link_id,
|
||||
+#endif
|
||||
u8 key_index)
|
||||
{
|
||||
#define SET_DEF_KEY_PARAM_FMT " key_index=%d"
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/usb_ops_linux.c b/drivers/staging/rtl8812au/os_dep/linux/usb_ops_linux.c
|
||||
index c7eb7ea40..9ced824fe 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/usb_ops_linux.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/usb_ops_linux.c
|
||||
@@ -898,6 +898,7 @@ void usb_recv_tasklet(unsigned long priv)
|
||||
}
|
||||
}
|
||||
|
||||
+void usb_read_port_complete(struct urb *purb, struct pt_regs *regs);
|
||||
void usb_read_port_complete(struct urb *purb, struct pt_regs *regs)
|
||||
{
|
||||
struct recv_buf *precvbuf = (struct recv_buf *)purb->context;
|
||||
--
|
||||
2.41.1
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From c0d16813f5af3b464cdb6dd415c83d1f238e3548 Mon Sep 17 00:00:00 2001
|
||||
From: CamiKaseM7 <camilorivasramunni@gmail.com>
|
||||
Date: Tue, 16 Jan 2024 03:44:34 -0300
|
||||
Subject: [PATCH 122/132] Fix change_beacon for kernel 6.7
|
||||
|
||||
---
|
||||
os_dep/linux/ioctl_cfg80211.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c b/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
index 510fa45..a135804 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
@@ -5283,9 +5283,16 @@ exit:
|
||||
return ret;
|
||||
}
|
||||
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 7, 0))
|
||||
+static int cfg80211_rtw_change_beacon(struct wiphy *wiphy, struct net_device *ndev,
|
||||
+ struct cfg80211_ap_update *params)
|
||||
+{
|
||||
+ struct cfg80211_beacon_data *info = ¶ms->beacon;
|
||||
+#else
|
||||
static int cfg80211_rtw_change_beacon(struct wiphy *wiphy, struct net_device *ndev,
|
||||
struct cfg80211_beacon_data *info)
|
||||
{
|
||||
+#endif
|
||||
int ret = 0;
|
||||
_adapter *adapter = (_adapter *)rtw_netdev_priv(ndev);
|
||||
|
||||
--
|
||||
2.41.1
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From d3feb6ae9398834d7778c0e43ebd1fa757eaecd8 Mon Sep 17 00:00:00 2001
|
||||
From: alium <info@aloisnespor.info>
|
||||
Date: Tue, 12 Mar 2024 07:11:35 +0100
|
||||
Subject: [PATCH 123/132] Update os_intfs.c for kernel 6.8
|
||||
|
||||
---
|
||||
os_dep/linux/os_intfs.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/os_intfs.c b/drivers/staging/rtl8812au/os_dep/linux/os_intfs.c
|
||||
index 2dadae0..f4f2ef9 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/os_intfs.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/os_intfs.c
|
||||
@@ -17,6 +17,10 @@
|
||||
#include <drv_types.h>
|
||||
#include <hal_data.h>
|
||||
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 8, 0))
|
||||
+#define strlcpy strscpy
|
||||
+#endif
|
||||
+
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("Realtek Wireless Lan Driver");
|
||||
MODULE_AUTHOR("Realtek Semiconductor Corp.");
|
||||
--
|
||||
2.41.1
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From 88d0f5ca85cb8f6a7970ccca9d06a5aa424a18b2 Mon Sep 17 00:00:00 2001
|
||||
From: alium <info@aloisnespor.info>
|
||||
Date: Tue, 12 Mar 2024 07:14:38 +0100
|
||||
Subject: [PATCH 124/132] Update usb_intf.c for kernel 6.8
|
||||
|
||||
---
|
||||
os_dep/linux/usb_intf.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c b/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c
|
||||
index be0f654..709e935 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/usb_intf.c
|
||||
@@ -270,7 +270,7 @@ struct rtw_usb_drv usb_drv = {
|
||||
.usbdrv.supports_autosuspend = 1,
|
||||
#endif
|
||||
|
||||
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19))
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0))
|
||||
.usbdrv.drvwrap.driver.shutdown = rtw_dev_shutdown,
|
||||
#else
|
||||
.usbdrv.driver.shutdown = rtw_dev_shutdown,
|
||||
--
|
||||
2.41.1
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
From 860ccf31655e160ec921190e443f0b532d8d3308 Mon Sep 17 00:00:00 2001
|
||||
From: alium <info@aloisnespor.info>
|
||||
Date: Sat, 30 Mar 2024 09:50:44 +0100
|
||||
Subject: [PATCH 128/132] Update ioctl_cfg80211.c - support for kernel 6.9
|
||||
|
||||
support for kernel 6.9
|
||||
---
|
||||
drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c b/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
index a135804..c1f20e9 100644
|
||||
--- a/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
+++ b/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
@@ -460,7 +460,7 @@ u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset,
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0))
|
||||
if (started) {
|
||||
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0))
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 9, 0))
|
||||
cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, 0, false, 0);
|
||||
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
|
||||
cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, 0, false);
|
||||
@@ -476,7 +476,7 @@ u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset,
|
||||
if (!rtw_cfg80211_allow_ch_switch_notify(adapter))
|
||||
goto exit;
|
||||
|
||||
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0))
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 9, 0))
|
||||
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0, 0);
|
||||
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2))
|
||||
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0);
|
||||
--
|
||||
2.41.1
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
|
||||
Include 3rdparty directory into the main build-system.
|
||||
|
||||
Original author is unknown.
|
||||
(Was either Juan Quintela or Jeff Garzik)
|
||||
|
||||
Signed-off-by: Luiz Fernando N. Capitulino <lcapitulino@mandriva.com.br>
|
||||
Signed-off-by: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
|
||||
[Simplified for Mageia 7 / kernel 5.1.6 and up / tmb]
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
---
|
||||
Makefile | 2 +-
|
||||
arch/arm/Kconfig | 2 ++
|
||||
arch/arm64/Kconfig | 2 ++
|
||||
arch/x86/Kconfig | 2 ++
|
||||
4 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff -Nurp linux-5.12/arch/arm/Kconfig linux-5.12-3rd/arch/arm/Kconfig
|
||||
--- linux-5.12/arch/arm/Kconfig 2021-04-25 23:49:08.000000000 +0300
|
||||
+++ linux-5.12-3rd/arch/arm/Kconfig 2021-04-26 18:10:06.513775304 +0300
|
||||
@@ -2016,3 +2016,5 @@ source "arch/arm/crypto/Kconfig"
|
||||
endif
|
||||
|
||||
source "arch/arm/Kconfig.assembler"
|
||||
+
|
||||
+source "3rdparty/Kconfig"
|
||||
diff -Nurp linux-5.12/arch/arm64/Kconfig linux-5.12-3rd/arch/arm64/Kconfig
|
||||
--- linux-5.12/arch/arm64/Kconfig 2021-04-25 23:49:08.000000000 +0300
|
||||
+++ linux-5.12-3rd/arch/arm64/Kconfig 2021-04-26 18:10:06.512775257 +0300
|
||||
@@ -1959,3 +1959,5 @@ source "arch/arm64/kvm/Kconfig"
|
||||
if CRYPTO
|
||||
source "arch/arm64/crypto/Kconfig"
|
||||
endif
|
||||
+
|
||||
+source "3rdparty/Kconfig"
|
||||
diff -Nurp linux-5.12/arch/x86/Kconfig linux-5.12-3rd/arch/x86/Kconfig
|
||||
--- linux-5.12/arch/x86/Kconfig 2021-04-25 23:49:08.000000000 +0300
|
||||
+++ linux-5.12-3rd/arch/x86/Kconfig 2021-04-26 18:10:06.512775257 +0300
|
||||
@@ -2909,3 +2909,5 @@ source "drivers/firmware/Kconfig"
|
||||
source "arch/x86/kvm/Kconfig"
|
||||
|
||||
source "arch/x86/Kconfig.assembler"
|
||||
+
|
||||
+source "3rdparty/Kconfig"
|
||||
diff -Nurp linux-5.14/Makefile linux-5.14-3rd/Makefile
|
||||
--- linux-5.14/Makefile
|
||||
+++ linux-5.14-3rd/Makefile
|
||||
@@ -670,7 +670,7 @@ endif
|
||||
ifeq ($(KBUILD_EXTMOD),)
|
||||
# Objects we will link into vmlinux / subdirs we need to visit
|
||||
core-y := init/ usr/ arch/$(SRCARCH)/
|
||||
-drivers-y := drivers/ sound/
|
||||
+drivers-y := drivers/ sound/ 3rdparty/
|
||||
drivers-$(CONFIG_SAMPLES) += samples/
|
||||
drivers-$(CONFIG_NET) += net/
|
||||
drivers-y += virt/
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
3rdparty/Kconfig | 5 +++++
|
||||
3rdparty/Makefile | 3 +++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff -Nurp linux-5.1.6/3rdparty/Kconfig linux-5.1.6-3rd/3rdparty/Kconfig
|
||||
--- linux-5.1.6/3rdparty/Kconfig 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ linux-5.1.6-3rd/3rdparty/Kconfig 2019-05-31 23:02:53.380127780 +0300
|
||||
@@ -0,0 +1,5 @@
|
||||
+#
|
||||
+
|
||||
+menu "External 3rdparty kernel additions"
|
||||
+
|
||||
+endmenu
|
||||
diff -Nurp linux-5.1.6/3rdparty/Makefile linux-5.1.6-3rd/3rdparty/Makefile
|
||||
--- linux-5.1.6/3rdparty/Makefile 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ linux-5.1.6-3rd/3rdparty/Makefile 2019-05-31 23:03:58.338529850 +0300
|
||||
@@ -0,0 +1,3 @@
|
||||
+#
|
||||
+
|
||||
+obj- := 3rdparty.o # Dummy rule to force built-in.o to be made
|
||||
@@ -1,34 +0,0 @@
|
||||
diff -up ./3rdparty/rtl8723de/Kconfig.tv ./3rdparty/rtl8723de/Kconfig
|
||||
--- ./3rdparty/rtl8723de/Kconfig.tv 2020-10-13 21:02:42.452125426 +0200
|
||||
+++ ./3rdparty/rtl8723de/Kconfig 2020-10-13 20:59:14.012371730 +0200
|
||||
@@ -1,6 +1,6 @@
|
||||
config RTL8723DE
|
||||
tristate "Realtek 8723DE PCI WiFi"
|
||||
depends on PCI
|
||||
- ---help---
|
||||
+ help
|
||||
Help message of RTL8723DE
|
||||
|
||||
diff -up ./3rdparty/rtl8821ce/Kconfig.tv ./3rdparty/rtl8821ce/Kconfig
|
||||
--- ./3rdparty/rtl8821ce/Kconfig.tv 2020-10-13 16:09:11.157856145 +0200
|
||||
+++ ./3rdparty/rtl8821ce/Kconfig 2020-10-13 20:58:17.242118685 +0200
|
||||
@@ -1,6 +1,6 @@
|
||||
config RTL8821CE
|
||||
tristate "Realtek 8821C PCI WiFi"
|
||||
depends on PCI
|
||||
- ---help---
|
||||
+ help
|
||||
Help message of RTL8821CE
|
||||
|
||||
diff -up ./3rdparty/viahss/Kconfig.tv ./3rdparty/viahss/Kconfig
|
||||
--- ./3rdparty/viahss/Kconfig.tv 2020-10-13 21:02:44.844168369 +0200
|
||||
+++ ./3rdparty/viahss/Kconfig 2020-10-13 20:59:19.875488718 +0200
|
||||
@@ -1,7 +1,7 @@
|
||||
config VIAHSS
|
||||
tristate "VIA High Speed Serial"
|
||||
depends on SERIAL_CORE && m
|
||||
- ---help---
|
||||
+ help
|
||||
VIA High Speed Serial is a little kernel module (1 KB) which enables
|
||||
high speed serial port modes of VIA VT82C686A or VT82C686B
|
||||
southbridge-equipped motherboards. With this module, you can use the
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +0,0 @@
|
||||
--- linux-2.6.24.orig/3rdparty/ndiswrapper/Kconfig 1969-12-31 21:00:00.000000000 -0300
|
||||
+++ linux-2.6.24/3rdparty/ndiswrapper/Kconfig 2007-11-26 15:11:31.000000000 -0200
|
||||
@@ -0,0 +1,4 @@
|
||||
+
|
||||
+config NDISWRAPPER
|
||||
+ tristate "NDIS driver wrapper support"
|
||||
+ depends on PCI && USB && !X86_64_XEN
|
||||
@@ -1,45 +0,0 @@
|
||||
--- linux-3.12.2-ndiswrapper-1.59/3rdparty/ndiswrapper/Makefile.orig 2013-11-28 21:42:10.000000000 +0200
|
||||
+++ linux-3.12.2-ndiswrapper-1.59/3rdparty/ndiswrapper/Makefile 2013-11-30 21:41:19.550504380 +0200
|
||||
@@ -9,24 +9,10 @@ DISTFILES = \
|
||||
winnt_types.h workqueue.c wrapmem.c wrapmem.h wrapndis.c wrapndis.h \
|
||||
wrapper.c wrapper.h
|
||||
|
||||
-# By default, we try to compile the modules for the currently running
|
||||
-# kernel. But it's the first approximation, as we will re-read the
|
||||
-# version from the kernel sources.
|
||||
-KVERS_UNAME ?= $(shell uname -r)
|
||||
-
|
||||
# KBUILD is the path to the Linux kernel build tree. It is usually the
|
||||
# same as the kernel source tree, except when the kernel was compiled in
|
||||
# a separate directory.
|
||||
-KBUILD ?= $(shell readlink -f /lib/modules/$(KVERS_UNAME)/build)
|
||||
-
|
||||
-ifeq (,$(KBUILD))
|
||||
-$(error Kernel build tree not found - please set KBUILD to configured kernel)
|
||||
-endif
|
||||
-
|
||||
-KCONFIG := $(KBUILD)/.config
|
||||
-ifeq (,$(wildcard $(KCONFIG)))
|
||||
-$(error No .config found in $(KBUILD), please set KBUILD to configured kernel)
|
||||
-endif
|
||||
+KBUILD ?= $(srctree)
|
||||
|
||||
ifneq (,$(wildcard $(KBUILD)/include/linux/version.h))
|
||||
ifneq (,$(wildcard $(KBUILD)/include/generated/uapi/linux/version.h))
|
||||
@@ -43,16 +29,9 @@ endif
|
||||
ifeq (,$(wildcard $(VERSION_H)))
|
||||
VERSION_H := $(KBUILD)/include/linux/version.h
|
||||
endif
|
||||
-ifeq (,$(wildcard $(VERSION_H)))
|
||||
-$(error Please run 'make modules_prepare' in $(KBUILD))
|
||||
-endif
|
||||
|
||||
KVERS := $(shell sed -ne 's/"//g;s/^\#define UTS_RELEASE //p' $(VERSION_H))
|
||||
|
||||
-ifeq (,$(KVERS))
|
||||
-$(error Cannot find UTS_RELEASE in $(VERSION_H), please report)
|
||||
-endif
|
||||
-
|
||||
INST_DIR = /lib/modules/$(KVERS)/misc
|
||||
|
||||
SRC_DIR=$(shell pwd)
|
||||
@@ -1,16 +0,0 @@
|
||||
--- linux/3rdparty/Kconfig.orig 2019-05-31 23:02:53.380127780 +0300
|
||||
+++ linux/3rdparty/Kconfig 2019-05-31 23:26:48.844304457 +0300
|
||||
@@ -2,4 +2,6 @@
|
||||
|
||||
menu "External 3rdparty kernel additions"
|
||||
|
||||
+source "3rdparty/ndiswrapper/Kconfig"
|
||||
+
|
||||
endmenu
|
||||
--- linux/3rdparty/Makefile.orig 2019-05-31 23:03:58.338529850 +0300
|
||||
+++ linux/3rdparty/Makefile 2019-05-31 23:27:35.405319287 +0300
|
||||
@@ -1,3 +1,4 @@
|
||||
#
|
||||
|
||||
obj- := 3rdparty.o # Dummy rule to force built-in.o to be made
|
||||
+obj-$(CONFIG_NDISWRAPPER) += ndiswrapper/
|
||||
@@ -1,244 +0,0 @@
|
||||
diff -urp linux-5.6.3/3rdparty/rtl8723de.orig/os_dep/linux/rtw_proc.c linux-5.6.3/3rdparty/rtl8723de/os_dep/linux/rtw_proc.c
|
||||
--- linux-5.6.3/3rdparty/rtl8723de.orig/os_dep/linux/rtw_proc.c 2020-04-10 17:12:12.495541693 +0300
|
||||
+++ linux-5.6.3/3rdparty/rtl8723de/os_dep/linux/rtw_proc.c 2020-04-10 17:22:51.328340275 +0300
|
||||
@@ -68,12 +68,19 @@ inline struct proc_dir_entry *rtw_proc_c
|
||||
return entry;
|
||||
}
|
||||
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||
+inline struct proc_dir_entry *rtw_proc_create_entry(const char *name, struct proc_dir_entry *parent,
|
||||
+ const struct proc_ops *pops, void * data)
|
||||
+#else
|
||||
inline struct proc_dir_entry *rtw_proc_create_entry(const char *name, struct proc_dir_entry *parent,
|
||||
const struct file_operations *fops, void * data)
|
||||
+#endif
|
||||
{
|
||||
struct proc_dir_entry *entry;
|
||||
|
||||
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26))
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||
+ entry = proc_create_data(name, S_IFREG | S_IRUGO | S_IWUGO, parent, pops, data);
|
||||
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26))
|
||||
entry = proc_create_data(name, S_IFREG | S_IRUGO | S_IWUGO, parent, fops, data);
|
||||
#else
|
||||
entry = create_proc_entry(name, S_IFREG | S_IRUGO | S_IWUGO, parent);
|
||||
@@ -219,7 +226,24 @@ static ssize_t rtw_drv_proc_write(struct
|
||||
return -EROFS;
|
||||
}
|
||||
|
||||
-static const struct file_operations rtw_drv_proc_seq_fops = {
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||
+static const struct proc_ops rtw_drv_proc_seq_ops = {
|
||||
+ .proc_open = rtw_drv_proc_open,
|
||||
+ .proc_read = seq_read,
|
||||
+ .proc_lseek = seq_lseek,
|
||||
+ .proc_release = seq_release,
|
||||
+ .proc_write = rtw_drv_proc_write,
|
||||
+};
|
||||
+
|
||||
+static const struct proc_ops rtw_drv_proc_sseq_ops = {
|
||||
+ .proc_open = rtw_drv_proc_open,
|
||||
+ .proc_read = seq_read,
|
||||
+ .proc_lseek = seq_lseek,
|
||||
+ .proc_release = single_release,
|
||||
+ .proc_write = rtw_drv_proc_write,
|
||||
+};
|
||||
+#else
|
||||
+static const struct file_operations rtw_drv_proc_seq_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rtw_drv_proc_open,
|
||||
.read = seq_read,
|
||||
@@ -228,7 +252,7 @@ static const struct file_operations rtw_
|
||||
.write = rtw_drv_proc_write,
|
||||
};
|
||||
|
||||
-static const struct file_operations rtw_drv_proc_sseq_fops = {
|
||||
+static const struct file_operations rtw_drv_proc_sseq_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rtw_drv_proc_open,
|
||||
.read = seq_read,
|
||||
@@ -236,6 +260,7 @@ static const struct file_operations rtw_
|
||||
.release = single_release,
|
||||
.write = rtw_drv_proc_write,
|
||||
};
|
||||
+#endif
|
||||
|
||||
int rtw_drv_proc_init(void)
|
||||
{
|
||||
@@ -257,9 +282,9 @@ int rtw_drv_proc_init(void)
|
||||
|
||||
for (i = 0; i < drv_proc_hdls_num; i++) {
|
||||
if (drv_proc_hdls[i].type == RTW_PROC_HDL_TYPE_SEQ)
|
||||
- entry = rtw_proc_create_entry(drv_proc_hdls[i].name, rtw_proc, &rtw_drv_proc_seq_fops, (void *)i);
|
||||
+ entry = rtw_proc_create_entry(drv_proc_hdls[i].name, rtw_proc, &rtw_drv_proc_seq_ops, (void *)i);
|
||||
else if (drv_proc_hdls[i].type == RTW_PROC_HDL_TYPE_SSEQ)
|
||||
- entry = rtw_proc_create_entry(drv_proc_hdls[i].name, rtw_proc, &rtw_drv_proc_sseq_fops, (void *)i);
|
||||
+ entry = rtw_proc_create_entry(drv_proc_hdls[i].name, rtw_proc, &rtw_drv_proc_sseq_ops, (void *)i);
|
||||
else
|
||||
entry = NULL;
|
||||
|
||||
@@ -2335,7 +2360,24 @@ static ssize_t rtw_adapter_proc_write(st
|
||||
return -EROFS;
|
||||
}
|
||||
|
||||
-static const struct file_operations rtw_adapter_proc_seq_fops = {
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||
+static const struct proc_ops rtw_adapter_proc_seq_ops = {
|
||||
+ .proc_open = rtw_adapter_proc_open,
|
||||
+ .proc_read = seq_read,
|
||||
+ .proc_lseek = seq_lseek,
|
||||
+ .proc_release = seq_release,
|
||||
+ .proc_write = rtw_adapter_proc_write,
|
||||
+};
|
||||
+
|
||||
+static const struct proc_ops rtw_adapter_proc_sseq_ops = {
|
||||
+ .proc_open = rtw_adapter_proc_open,
|
||||
+ .proc_read = seq_read,
|
||||
+ .proc_lseek = seq_lseek,
|
||||
+ .proc_release = single_release,
|
||||
+ .proc_write = rtw_adapter_proc_write,
|
||||
+};
|
||||
+#else
|
||||
+static const struct file_operations rtw_adapter_proc_seq_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rtw_adapter_proc_open,
|
||||
.read = seq_read,
|
||||
@@ -2344,7 +2386,7 @@ static const struct file_operations rtw_
|
||||
.write = rtw_adapter_proc_write,
|
||||
};
|
||||
|
||||
-static const struct file_operations rtw_adapter_proc_sseq_fops = {
|
||||
+static const struct file_operations rtw_adapter_proc_sseq_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rtw_adapter_proc_open,
|
||||
.read = seq_read,
|
||||
@@ -2352,6 +2394,7 @@ static const struct file_operations rtw_
|
||||
.release = single_release,
|
||||
.write = rtw_adapter_proc_write,
|
||||
};
|
||||
+#endif
|
||||
|
||||
int proc_get_odm_dbg_comp(struct seq_file *m, void *v)
|
||||
{
|
||||
@@ -2670,7 +2713,24 @@ static ssize_t rtw_odm_proc_write(struct
|
||||
return -EROFS;
|
||||
}
|
||||
|
||||
-static const struct file_operations rtw_odm_proc_seq_fops = {
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||
+static const struct proc_ops rtw_odm_proc_seq_ops = {
|
||||
+ .proc_open = rtw_odm_proc_open,
|
||||
+ .proc_read = seq_read,
|
||||
+ .proc_lseek = seq_lseek,
|
||||
+ .proc_release = seq_release,
|
||||
+ .proc_write = rtw_odm_proc_write,
|
||||
+};
|
||||
+
|
||||
+static const struct proc_ops rtw_odm_proc_sseq_ops = {
|
||||
+ .proc_open = rtw_odm_proc_open,
|
||||
+ .proc_read = seq_read,
|
||||
+ .proc_lseek = seq_lseek,
|
||||
+ .proc_release = single_release,
|
||||
+ .proc_write = rtw_odm_proc_write,
|
||||
+};
|
||||
+#else
|
||||
+static const struct file_operations rtw_odm_proc_seq_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rtw_odm_proc_open,
|
||||
.read = seq_read,
|
||||
@@ -2679,7 +2739,7 @@ static const struct file_operations rtw_
|
||||
.write = rtw_odm_proc_write,
|
||||
};
|
||||
|
||||
-static const struct file_operations rtw_odm_proc_sseq_fops = {
|
||||
+static const struct file_operations rtw_odm_proc_sseq_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rtw_odm_proc_open,
|
||||
.read = seq_read,
|
||||
@@ -2687,6 +2747,7 @@ static const struct file_operations rtw_
|
||||
.release = single_release,
|
||||
.write = rtw_odm_proc_write,
|
||||
};
|
||||
+#endif
|
||||
|
||||
struct proc_dir_entry *rtw_odm_proc_init(struct net_device *dev)
|
||||
{
|
||||
@@ -2715,9 +2776,9 @@ struct proc_dir_entry *rtw_odm_proc_init
|
||||
|
||||
for (i = 0; i < odm_proc_hdls_num; i++) {
|
||||
if (odm_proc_hdls[i].type == RTW_PROC_HDL_TYPE_SEQ)
|
||||
- entry = rtw_proc_create_entry(odm_proc_hdls[i].name, dir_odm, &rtw_odm_proc_seq_fops, (void *)i);
|
||||
+ entry = rtw_proc_create_entry(odm_proc_hdls[i].name, dir_odm, &rtw_odm_proc_seq_ops, (void *)i);
|
||||
else if (odm_proc_hdls[i].type == RTW_PROC_HDL_TYPE_SSEQ)
|
||||
- entry = rtw_proc_create_entry(odm_proc_hdls[i].name, dir_odm, &rtw_odm_proc_sseq_fops, (void *)i);
|
||||
+ entry = rtw_proc_create_entry(odm_proc_hdls[i].name, dir_odm, &rtw_odm_proc_sseq_ops, (void *)i);
|
||||
else
|
||||
entry = NULL;
|
||||
|
||||
@@ -2809,7 +2870,24 @@ static ssize_t rtw_mcc_proc_write(struct
|
||||
return -EROFS;
|
||||
}
|
||||
|
||||
-static const struct file_operations rtw_mcc_proc_seq_fops = {
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||
+static const struct proc_ops rtw_mcc_proc_seq_ops = {
|
||||
+ .proc_open = rtw_mcc_proc_open,
|
||||
+ .proc_read = seq_read,
|
||||
+ .proc_lseek = seq_lseek,
|
||||
+ .proc_release = seq_release,
|
||||
+ .proc_write = rtw_mcc_proc_write,
|
||||
+};
|
||||
+
|
||||
+static const struct file_operations rtw_mcc_proc_sseq_ops = {
|
||||
+ .proc_open = rtw_mcc_proc_open,
|
||||
+ .proc_read = seq_read,
|
||||
+ .proc_lseek = seq_lseek,
|
||||
+ .proc_release = single_release,
|
||||
+ .proc_write = rtw_mcc_proc_write,
|
||||
+};
|
||||
+#else
|
||||
+static const struct file_operations rtw_mcc_proc_seq_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rtw_mcc_proc_open,
|
||||
.read = seq_read,
|
||||
@@ -2818,7 +2896,7 @@ static const struct file_operations rtw_
|
||||
.write = rtw_mcc_proc_write,
|
||||
};
|
||||
|
||||
-static const struct file_operations rtw_mcc_proc_sseq_fops = {
|
||||
+static const struct file_operations rtw_mcc_proc_sseq_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rtw_mcc_proc_open,
|
||||
.read = seq_read,
|
||||
@@ -2826,6 +2904,7 @@ static const struct file_operations rtw_
|
||||
.release = single_release,
|
||||
.write = rtw_mcc_proc_write,
|
||||
};
|
||||
+#endif
|
||||
|
||||
struct proc_dir_entry *rtw_mcc_proc_init(struct net_device *dev)
|
||||
{
|
||||
@@ -2854,9 +2933,9 @@ struct proc_dir_entry *rtw_mcc_proc_init
|
||||
|
||||
for (i = 0; i < mcc_proc_hdls_num; i++) {
|
||||
if (mcc_proc_hdls[i].type == RTW_PROC_HDL_TYPE_SEQ)
|
||||
- entry = rtw_proc_create_entry(mcc_proc_hdls[i].name, dir_mcc, &rtw_mcc_proc_seq_fops, (void *)i);
|
||||
+ entry = rtw_proc_create_entry(mcc_proc_hdls[i].name, dir_mcc, &rtw_mcc_proc_seq_ops, (void *)i);
|
||||
else if (mcc_proc_hdls[i].type == RTW_PROC_HDL_TYPE_SSEQ)
|
||||
- entry = rtw_proc_create_entry(mcc_proc_hdls[i].name, dir_mcc, &rtw_mcc_proc_sseq_fops, (void *)i);
|
||||
+ entry = rtw_proc_create_entry(mcc_proc_hdls[i].name, dir_mcc, &rtw_mcc_proc_sseq_ops, (void *)i);
|
||||
else
|
||||
entry = NULL;
|
||||
|
||||
@@ -2920,9 +2999,9 @@ struct proc_dir_entry *rtw_adapter_proc_
|
||||
|
||||
for (i = 0; i < adapter_proc_hdls_num; i++) {
|
||||
if (adapter_proc_hdls[i].type == RTW_PROC_HDL_TYPE_SEQ)
|
||||
- entry = rtw_proc_create_entry(adapter_proc_hdls[i].name, dir_dev, &rtw_adapter_proc_seq_fops, (void *)i);
|
||||
+ entry = rtw_proc_create_entry(adapter_proc_hdls[i].name, dir_dev, &rtw_adapter_proc_seq_ops, (void *)i);
|
||||
else if (adapter_proc_hdls[i].type == RTW_PROC_HDL_TYPE_SSEQ)
|
||||
- entry = rtw_proc_create_entry(adapter_proc_hdls[i].name, dir_dev, &rtw_adapter_proc_sseq_fops, (void *)i);
|
||||
+ entry = rtw_proc_create_entry(adapter_proc_hdls[i].name, dir_dev, &rtw_adapter_proc_sseq_ops, (void *)i);
|
||||
else
|
||||
entry = NULL;
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
--- linux/3rdparty/Kconfig.orig 2019-05-31 23:30:41.568375751 +0300
|
||||
+++ linux/3rdparty/Kconfig 2019-05-31 23:33:39.796256889 +0300
|
||||
@@ -4,5 +4,6 @@ menu "External 3rdparty kernel additions"
|
||||
|
||||
source "3rdparty/ndiswrapper/Kconfig"
|
||||
source "3rdparty/rtl8812au/Kconfig"
|
||||
+source "3rdparty/rtl8723de/Kconfig"
|
||||
|
||||
endmenu
|
||||
--- linux/3rdparty/Makefile.orig 2019-05-31 23:33:17.610773901 +0300
|
||||
+++ linux/3rdparty/Makefile 2019-05-31 23:33:57.608644657 +0300
|
||||
@@ -3,3 +3,4 @@
|
||||
obj- := 3rdparty.o # Dummy rule to force built-in.o to be made
|
||||
obj-$(CONFIG_NDISWRAPPER) += ndiswrapper/
|
||||
obj-$(CONFIG_RTL8812AU) += rtl8812au/
|
||||
+obj-$(CONFIG_RTL8723DE) += rtl8723de/
|
||||
@@ -1,79 +0,0 @@
|
||||
--- linux-5.8/3rdparty/rtl8723de/core/rtw_security.c
|
||||
+++ linux-5.8/3rdparty/rtl8723de/core/rtw_security.c
|
||||
@@ -33,6 +33,14 @@ static const char *_security_type_str[] = {
|
||||
"BIP",
|
||||
};
|
||||
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
|
||||
+struct sha256_state {
|
||||
+ u64 length;
|
||||
+ u32 state[8], curlen;
|
||||
+ u8 buf[64];
|
||||
+};
|
||||
+#endif
|
||||
+
|
||||
const char *security_type_str(u8 value)
|
||||
{
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
--- linux-5.8/3rdparty/rtl8723de/include/rtw_security.h
|
||||
+++ linux-5.8/3rdparty/rtl8723de/include/rtw_security.h
|
||||
@@ -246,11 +246,13 @@ struct security_priv {
|
||||
#endif /* DBG_SW_SEC_CNT */
|
||||
};
|
||||
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0))
|
||||
struct sha256_state {
|
||||
u64 length;
|
||||
u32 state[8], curlen;
|
||||
u8 buf[64];
|
||||
};
|
||||
+#endif
|
||||
|
||||
#define GET_ENCRY_ALGO(psecuritypriv, psta, encry_algo, bmcst)\
|
||||
do {\
|
||||
--- linux-5.8/3rdparty/rtl8723de/os_dep/linux/ioctl_cfg80211.c
|
||||
+++ linux-5.8/3rdparty/rtl8723de/os_dep/linux/ioctl_cfg80211.c
|
||||
@@ -5857,10 +5857,18 @@ static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy,
|
||||
#else
|
||||
struct net_device *ndev,
|
||||
#endif
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
|
||||
+ struct mgmt_frame_regs *upd)
|
||||
+#else
|
||||
u16 frame_type, bool reg)
|
||||
+#endif
|
||||
{
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0))
|
||||
struct net_device *ndev = wdev_to_ndev(wdev);
|
||||
+#endif
|
||||
+/* hardcoded always true, to make it pass compilation */
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
|
||||
+ bool reg = true;
|
||||
#endif
|
||||
_adapter *adapter;
|
||||
|
||||
@@ -5880,7 +5888,11 @@ static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy,
|
||||
/* Wait QC Verify */
|
||||
return;
|
||||
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
|
||||
+ switch (upd->interface_stypes) {
|
||||
+#else
|
||||
switch (frame_type) {
|
||||
+#endif
|
||||
case IEEE80211_STYPE_PROBE_REQ: /* 0x0040 */
|
||||
SET_CFG80211_REPORT_MGMT(pwdev_priv, IEEE80211_STYPE_PROBE_REQ, reg);
|
||||
break;
|
||||
@@ -6846,7 +6858,11 @@ static struct cfg80211_ops rtw_cfg80211_ops = {
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE)
|
||||
.mgmt_tx = cfg80211_rtw_mgmt_tx,
|
||||
- .mgmt_frame_register = cfg80211_rtw_mgmt_frame_register,
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
|
||||
+ .update_mgmt_frame_registrations = cfg80211_rtw_mgmt_frame_register,
|
||||
+#else
|
||||
+ .mgmt_frame_register = cfg80211_rtw_mgmt_frame_register,
|
||||
+#endif
|
||||
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34) && LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35))
|
||||
.action = cfg80211_rtw_mgmt_tx,
|
||||
#endif
|
||||
@@ -1,13 +0,0 @@
|
||||
--- linux/3rdparty/rtl8723de/include/wifi.h.orig 2019-01-19 16:29:26.302342688 +0200
|
||||
+++ linux/3rdparty/rtl8723de/include/wifi.h 2019-01-19 16:32:25.543905828 +0200
|
||||
@@ -1003,8 +1003,9 @@ typedef enum _HT_CAP_AMPDU_DENSITY {
|
||||
* According to IEEE802.11n spec size varies from 8K to 64K (in powers of 2)
|
||||
*/
|
||||
#define IEEE80211_MIN_AMPDU_BUF 0x8
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0))
|
||||
#define IEEE80211_MAX_AMPDU_BUF 0x40
|
||||
-
|
||||
+#endif
|
||||
|
||||
/* Spatial Multiplexing Power Save Modes */
|
||||
#define WLAN_HT_CAP_SM_PS_STATIC 0
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ./3rdparty/rtl8723de/Makefile.orig 2019-10-08 13:51:56.729205790 +0300
|
||||
+++ ./3rdparty/rtl8723de/Makefile 2019-10-08 14:03:32.894164296 +0300
|
||||
@@ -74,7 +74,7 @@ CONFIG_APPEND_VENDOR_IE_ENABLE = n
|
||||
CONFIG_RTW_NAPI = y
|
||||
CONFIG_RTW_GRO = y
|
||||
########################## Debug ###########################
|
||||
-CONFIG_RTW_DEBUG = y
|
||||
+CONFIG_RTW_DEBUG = n
|
||||
# default log level is _DRV_INFO_ = 4,
|
||||
# please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.
|
||||
CONFIG_RTW_LOG_LEVEL = 4
|
||||
@@ -1,16 +0,0 @@
|
||||
--- linux/3rdparty/Kconfig.orig 2019-05-31 23:26:48.844304457 +0300
|
||||
+++ linux/3rdparty/Kconfig 2019-05-31 23:30:41.568375751 +0300
|
||||
@@ -3,5 +3,6 @@
|
||||
menu "External 3rdparty kernel additions"
|
||||
|
||||
source "3rdparty/ndiswrapper/Kconfig"
|
||||
+source "3rdparty/rtl8812au/Kconfig"
|
||||
|
||||
endmenu
|
||||
--- linux/3rdparty/Makefile.orig 2019-05-31 23:27:35.405319287 +0300
|
||||
+++ linux/3rdparty/Makefile 2019-05-31 23:30:56.855708733 +0300
|
||||
@@ -2,3 +2,4 @@
|
||||
|
||||
obj- := 3rdparty.o # Dummy rule to force built-in.o to be made
|
||||
obj-$(CONFIG_NDISWRAPPER) += ndiswrapper/
|
||||
+obj-$(CONFIG_RTL8812AU) += rtl8812au/
|
||||
@@ -1,281 +0,0 @@
|
||||
From ee9619ba0c8840db6d59d11989c31e24a8f0d806 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos <CGarces@users.noreply.github.com>
|
||||
Date: Sun, 8 Nov 2020 12:25:43 +0000
|
||||
Subject: [PATCH] Fix kernel 5.10-rc1
|
||||
|
||||
---
|
||||
3rdparty/rtl8812au/core/rtw_btcoex.c | 7 ++++++-
|
||||
3rdparty/rtl8812au/core/rtw_wlan_util.c | 10 ++++++----
|
||||
3rdparty/rtl8812au/os_dep/linux/os_intfs.c | 19 +++++++++++++-----
|
||||
3rdparty/rtl8812au/os_dep/osdep_service.c | 43 +++++++++++++++++++++++++++--------------
|
||||
4 files changed, 54 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/3rdparty/rtl8812au/core/rtw_btcoex.c b/3rdparty/rtl8812au/core/rtw_btcoex.c
|
||||
index d5b89bdc..f5e0f567 100644
|
||||
--- a/3rdparty/rtl8812au/core/rtw_btcoex.c
|
||||
+++ b/3rdparty/rtl8812au/core/rtw_btcoex.c
|
||||
@@ -1443,7 +1443,9 @@ u8 rtw_btcoex_sendmsgbysocket(_adapter *padapter, u8 *msg, u8 msg_size, bool for
|
||||
{
|
||||
u8 error;
|
||||
struct msghdr udpmsg;
|
||||
+#ifdef set_fs
|
||||
mm_segment_t oldfs;
|
||||
+#endif
|
||||
struct iovec iov;
|
||||
struct bt_coex_info *pcoex_info = &padapter->coex_info;
|
||||
|
||||
@@ -1473,15 +1475,18 @@ u8 rtw_btcoex_sendmsgbysocket(_adapter *padapter, u8 *msg, u8 msg_size, bool for
|
||||
udpmsg.msg_control = NULL;
|
||||
udpmsg.msg_controllen = 0;
|
||||
udpmsg.msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL;
|
||||
+#ifdef set_fs
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
-
|
||||
+#endif
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
|
||||
error = sock_sendmsg(pcoex_info->udpsock, &udpmsg);
|
||||
#else
|
||||
error = sock_sendmsg(pcoex_info->udpsock, &udpmsg, msg_size);
|
||||
#endif
|
||||
+#ifdef set_fs
|
||||
set_fs(oldfs);
|
||||
+#endif
|
||||
if (error < 0) {
|
||||
RTW_INFO("Error when sendimg msg, error:%d\n", error);
|
||||
return _FAIL;
|
||||
diff --git a/3rdparty/rtl8812au/core/rtw_wlan_util.c b/3rdparty/rtl8812au/core/rtw_wlan_util.c
|
||||
index b4cecd11..e465e9b5 100644
|
||||
--- a/3rdparty/rtl8812au/core/rtw_wlan_util.c
|
||||
+++ b/3rdparty/rtl8812au/core/rtw_wlan_util.c
|
||||
@@ -4744,7 +4744,9 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t *ssid,
|
||||
|
||||
int i = 0;
|
||||
struct file *fp;
|
||||
+#ifdef set_fs
|
||||
mm_segment_t fs;
|
||||
+#endif
|
||||
loff_t pos = 0;
|
||||
u8 *source = NULL;
|
||||
long len = 0;
|
||||
@@ -4780,10 +4782,10 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t *ssid,
|
||||
RTW_INFO("Error, cipher array using default value.\n");
|
||||
return 0;
|
||||
}
|
||||
-
|
||||
+#ifdef set_fs
|
||||
fs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
-
|
||||
+#endif
|
||||
source = rtw_zmalloc(2048);
|
||||
|
||||
if (source != NULL) {
|
||||
@@ -4791,10 +4793,10 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t *ssid,
|
||||
rtw_parse_cipher_list(nlo_info, source);
|
||||
rtw_mfree(source, 2048);
|
||||
}
|
||||
-
|
||||
+#ifdef set_fs
|
||||
set_fs(fs);
|
||||
filp_close(fp, NULL);
|
||||
-
|
||||
+#endif
|
||||
RTW_INFO("-%s-\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
diff --git a/3rdparty/rtl8812au/os_dep/linux/os_intfs.c b/3rdparty/rtl8812au/os_dep/linux/os_intfs.c
|
||||
index 1085d6cd..a37e488b 100644
|
||||
--- a/3rdparty/rtl8812au/os_dep/linux/os_intfs.c
|
||||
+++ b/3rdparty/rtl8812au/os_dep/linux/os_intfs.c
|
||||
@@ -4029,7 +4029,9 @@ static int route_dump(u32 *gw_addr , int *gw_index)
|
||||
struct msghdr msg;
|
||||
struct iovec iov;
|
||||
struct sockaddr_nl nladdr;
|
||||
+#ifdef set_fs
|
||||
mm_segment_t oldfs;
|
||||
+#endif
|
||||
char *pg;
|
||||
int size = 0;
|
||||
|
||||
@@ -4067,16 +4069,18 @@ static int route_dump(u32 *gw_addr , int *gw_index)
|
||||
msg.msg_control = NULL;
|
||||
msg.msg_controllen = 0;
|
||||
msg.msg_flags = MSG_DONTWAIT;
|
||||
-
|
||||
+#ifdef set_fs
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+#endif
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
|
||||
err = sock_sendmsg(sock, &msg);
|
||||
#else
|
||||
err = sock_sendmsg(sock, &msg, sizeof(req));
|
||||
#endif
|
||||
+#ifdef set_fs
|
||||
set_fs(oldfs);
|
||||
-
|
||||
+#endif
|
||||
if (err < 0)
|
||||
goto out_sock;
|
||||
|
||||
@@ -4099,16 +4103,18 @@ static int route_dump(u32 *gw_addr , int *gw_index)
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0))
|
||||
iov_iter_init(&msg.msg_iter, READ, &iov, 1, PAGE_SIZE);
|
||||
#endif
|
||||
-
|
||||
+#ifdef set_fs
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+#endif
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
|
||||
err = sock_recvmsg(sock, &msg, MSG_DONTWAIT);
|
||||
#else
|
||||
err = sock_recvmsg(sock, &msg, PAGE_SIZE, MSG_DONTWAIT);
|
||||
#endif
|
||||
+#ifdef set_fs
|
||||
set_fs(oldfs);
|
||||
-
|
||||
+#endif
|
||||
if (err < 0)
|
||||
goto out_sock_pg;
|
||||
|
||||
@@ -4178,15 +4184,18 @@ static int route_dump(u32 *gw_addr , int *gw_index)
|
||||
msg.msg_controllen = 0;
|
||||
msg.msg_flags = MSG_DONTWAIT;
|
||||
|
||||
+#ifdef set_fs
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+#endif
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
|
||||
err = sock_sendmsg(sock, &msg);
|
||||
#else
|
||||
err = sock_sendmsg(sock, &msg, sizeof(req));
|
||||
#endif
|
||||
+#ifdef set_fs
|
||||
set_fs(oldfs);
|
||||
-
|
||||
+#endif
|
||||
if (err > 0)
|
||||
goto restart;
|
||||
}
|
||||
diff --git a/3rdparty/rtl8812au/os_dep/osdep_service.c b/3rdparty/rtl8812au/os_dep/osdep_service.c
|
||||
index 7c6d1208..0769b49d 100644
|
||||
--- a/3rdparty/rtl8812au/os_dep/osdep_service.c
|
||||
+++ b/3rdparty/rtl8812au/os_dep/osdep_service.c
|
||||
@@ -2164,11 +2164,21 @@ static int writeFile(struct file *fp, char *buf, int len)
|
||||
{
|
||||
int wlen = 0, sum = 0;
|
||||
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
|
||||
+ if (!(fp->f_mode & FMODE_CAN_WRITE))
|
||||
+#else
|
||||
if (!fp->f_op || !fp->f_op->write)
|
||||
+#endif
|
||||
return -EPERM;
|
||||
|
||||
while (sum < len) {
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
|
||||
+ wlen = kernel_write(fp, buf + sum, len - sum, &fp->f_pos);
|
||||
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
|
||||
+ wlen = __vfs_write(fp, buf + sum, len - sum, &fp->f_pos);
|
||||
+#else
|
||||
wlen = fp->f_op->write(fp, buf + sum, len - sum, &fp->f_pos);
|
||||
+#endif
|
||||
if (wlen > 0)
|
||||
sum += wlen;
|
||||
else if (0 != wlen)
|
||||
@@ -2191,19 +2201,19 @@ static int isFileReadable(const char *path, u32 *sz)
|
||||
{
|
||||
struct file *fp;
|
||||
int ret = 0;
|
||||
+#ifdef set_fs
|
||||
mm_segment_t oldfs;
|
||||
+#endif
|
||||
char buf;
|
||||
|
||||
fp = filp_open(path, O_RDONLY, 0);
|
||||
if (IS_ERR(fp))
|
||||
ret = PTR_ERR(fp);
|
||||
else {
|
||||
+#ifdef set_fs
|
||||
oldfs = get_fs();
|
||||
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0))
|
||||
set_fs(KERNEL_DS);
|
||||
- #else
|
||||
- set_fs(get_ds());
|
||||
- #endif
|
||||
+#endif
|
||||
|
||||
if (1 != readFile(fp, &buf, 1))
|
||||
ret = PTR_ERR(fp);
|
||||
@@ -2215,8 +2225,9 @@ static int isFileReadable(const char *path, u32 *sz)
|
||||
*sz = i_size_read(fp->f_dentry->d_inode);
|
||||
#endif
|
||||
}
|
||||
-
|
||||
+#ifdef set_fs
|
||||
set_fs(oldfs);
|
||||
+#endif
|
||||
filp_close(fp, NULL);
|
||||
}
|
||||
return ret;
|
||||
@@ -2232,22 +2243,23 @@ static int isFileReadable(const char *path, u32 *sz)
|
||||
static int retriveFromFile(const char *path, u8 *buf, u32 sz)
|
||||
{
|
||||
int ret = -1;
|
||||
+#ifdef set_fs
|
||||
mm_segment_t oldfs;
|
||||
+#endif
|
||||
struct file *fp;
|
||||
|
||||
if (path && buf) {
|
||||
ret = openFile(&fp, path, O_RDONLY, 0);
|
||||
if (0 == ret) {
|
||||
RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp);
|
||||
-
|
||||
+#ifdef set_fs
|
||||
oldfs = get_fs();
|
||||
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0))
|
||||
set_fs(KERNEL_DS);
|
||||
- #else
|
||||
- set_fs(get_ds());
|
||||
- #endif
|
||||
ret = readFile(fp, buf, sz);
|
||||
set_fs(oldfs);
|
||||
+#else
|
||||
+ ret = readFile(fp, buf, sz);
|
||||
+#endif
|
||||
closeFile(fp);
|
||||
|
||||
RTW_INFO("%s readFile, ret:%d\n", __FUNCTION__, ret);
|
||||
@@ -2271,22 +2283,23 @@ static int retriveFromFile(const char *path, u8 *buf, u32 sz)
|
||||
static int storeToFile(const char *path, u8 *buf, u32 sz)
|
||||
{
|
||||
int ret = 0;
|
||||
+#ifdef set_fs
|
||||
mm_segment_t oldfs;
|
||||
+#endif
|
||||
struct file *fp;
|
||||
|
||||
if (path && buf) {
|
||||
ret = openFile(&fp, path, O_CREAT | O_WRONLY, 0666);
|
||||
if (0 == ret) {
|
||||
RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp);
|
||||
-
|
||||
+#ifdef set_fs
|
||||
oldfs = get_fs();
|
||||
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0))
|
||||
set_fs(KERNEL_DS);
|
||||
- #else
|
||||
- set_fs(get_ds());
|
||||
- #endif
|
||||
ret = writeFile(fp, buf, sz);
|
||||
set_fs(oldfs);
|
||||
+#else
|
||||
+ ret = writeFile(fp, buf, sz);
|
||||
+#endif
|
||||
closeFile(fp);
|
||||
|
||||
RTW_INFO("%s writeFile, ret:%d\n", __FUNCTION__, ret);
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -urp linux/3rdparty/rtl8812au.orig/os_dep/linux/recv_linux.c linux/3rdparty/rtl8812au/os_dep/linux/recv_linux.c
|
||||
--- linux/3rdparty/rtl8812au.orig/os_dep/linux/recv_linux.c 2021-04-26 18:35:37.411027594 +0300
|
||||
+++ linux/3rdparty/rtl8812au/os_dep/linux/recv_linux.c 2021-04-26 18:53:13.502814526 +0300
|
||||
@@ -353,7 +353,7 @@ static int napi_recv(_adapter *padapter,
|
||||
|
||||
rx_ok = _FALSE;
|
||||
|
||||
-#ifdef CONFIG_RTW_GRO
|
||||
+#if defined(CONFIG_RTW_GRO) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 12, 0)
|
||||
if (pregistrypriv->en_gro) {
|
||||
if (rtw_napi_gro_receive(&padapter->napi, pskb) != GRO_DROP)
|
||||
rx_ok = _TRUE;
|
||||
@@ -1,66 +0,0 @@
|
||||
|
||||
From:
|
||||
https://github.com/aircrack-ng/rtl8812au/commit/47a38b7c736dd9e9baac9eb07a6dceb83429fb49
|
||||
|
||||
diff -Nurp linux-5.15/3rdparty/rtl8812au.orig/core/rtw_br_ext.c linux-5.15/3rdparty/rtl8812au/core/rtw_br_ext.c
|
||||
--- linux-5.15/3rdparty/rtl8812au.orig/core/rtw_br_ext.c 2021-11-08 23:40:48.236272741 +0200
|
||||
+++ linux-5.15/3rdparty/rtl8812au/core/rtw_br_ext.c 2021-11-08 23:49:12.118046953 +0200
|
||||
@@ -17,7 +17,10 @@
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/if_arp.h>
|
||||
#include <net/ip.h>
|
||||
+ #include <linux/version.h>
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)
|
||||
#include <net/ipx.h>
|
||||
+#endif
|
||||
#include <linux/atalk.h>
|
||||
#include <linux/udp.h>
|
||||
#include <linux/if_pppox.h>
|
||||
@@ -169,6 +172,7 @@ static __inline__ void __nat25_generate_
|
||||
}
|
||||
|
||||
|
||||
+#ifdef _NET_INET_IPX_H_
|
||||
static __inline__ void __nat25_generate_ipx_network_addr_with_node(unsigned char *networkAddr,
|
||||
unsigned int *ipxNetAddr, unsigned char *ipxNodeAddr)
|
||||
{
|
||||
@@ -189,6 +193,7 @@ static __inline__ void __nat25_generate_
|
||||
memcpy(networkAddr + 1, (unsigned char *)ipxNetAddr, 4);
|
||||
memcpy(networkAddr + 5, (unsigned char *)ipxSocketAddr, 2);
|
||||
}
|
||||
+#endif
|
||||
|
||||
|
||||
static __inline__ void __nat25_generate_apple_network_addr(unsigned char *networkAddr,
|
||||
@@ -330,6 +335,7 @@ static __inline__ int __nat25_network_ha
|
||||
x = networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10];
|
||||
|
||||
return x & (NAT25_HASH_SIZE - 1);
|
||||
+#ifdef _NET_INET_IPX_H_
|
||||
} else if (networkAddr[0] == NAT25_IPX) {
|
||||
unsigned long x;
|
||||
|
||||
@@ -337,6 +343,7 @@ static __inline__ int __nat25_network_ha
|
||||
networkAddr[6] ^ networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10];
|
||||
|
||||
return x & (NAT25_HASH_SIZE - 1);
|
||||
+#endif
|
||||
} else if (networkAddr[0] == NAT25_APPLE) {
|
||||
unsigned long x;
|
||||
|
||||
@@ -889,6 +896,7 @@ int nat25_db_handle(_adapter *priv, stru
|
||||
}
|
||||
}
|
||||
|
||||
+#ifdef _NET_INET_IPX_H_
|
||||
/*---------------------------------------------------*/
|
||||
/* Handle IPX and Apple Talk frame */
|
||||
/*---------------------------------------------------*/
|
||||
@@ -1109,6 +1117,7 @@ int nat25_db_handle(_adapter *priv, stru
|
||||
|
||||
return -1;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/*---------------------------------------------------*/
|
||||
/* Handle PPPoE frame */
|
||||
@@ -1,78 +0,0 @@
|
||||
|
||||
Adjust driver bits so it keeps the name of the replaced driver
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
---
|
||||
3rdparty/rtl8812au/Kconfig | 7 +++----
|
||||
3rdparty/rtl8812au/Makefile | 8 ++++----
|
||||
3rdparty/rtl8812au/hal/hal_com.c | 2 +-
|
||||
3rdparty/rtl8812au/os_dep/linux/ioctl_cfg80211.c | 2 +-
|
||||
4 files changed, 9 insertions(+), 10 deletions(-)
|
||||
|
||||
diff -Nurp linux-5.11/3rdparty/rtl8812au.orig/hal/hal_com.c linux-5.11/3rdparty/rtl8812au/hal/hal_com.c
|
||||
--- linux-5.11/3rdparty/rtl8812au.orig/hal/hal_com.c 2021-03-07 18:43:20.313672664 +0200
|
||||
+++ linux-5.11/3rdparty/rtl8812au/hal/hal_com.c 2021-03-07 18:43:51.392141299 +0200
|
||||
@@ -12879,7 +12879,7 @@ bypass_hw_pg:
|
||||
_rtw_memset(hal_data->EEPROMMACAddr, 0, ETH_ALEN);
|
||||
ret = _FAIL;
|
||||
exit:
|
||||
- dev_info(&udev->dev, "88XXau %pM hw_info[%02x]", hw_addr, addr_offset);
|
||||
+ dev_info(&udev->dev, "8812au %pM hw_info[%02x]", hw_addr, addr_offset);
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff -Nurp linux-5.11/3rdparty/rtl8812au.orig/Kconfig linux-5.11/3rdparty/rtl8812au/Kconfig
|
||||
--- linux-5.11/3rdparty/rtl8812au.orig/Kconfig 2021-03-07 18:43:20.369675309 +0200
|
||||
+++ linux-5.11/3rdparty/rtl8812au/Kconfig 2021-03-07 18:45:22.910465892 +0200
|
||||
@@ -1,6 +1,5 @@
|
||||
-config 88XXAU
|
||||
- tristate "Realtek 88XXau USB WiFi"
|
||||
+config RTL8812AU
|
||||
+ tristate "Realtek 8812au USB WiFi"
|
||||
depends on USB
|
||||
help
|
||||
- Help message of 88XXau
|
||||
-
|
||||
+ Help message of 8812au
|
||||
diff -Nurp linux-5.11/3rdparty/rtl8812au.orig/Makefile linux-5.11/3rdparty/rtl8812au/Makefile
|
||||
--- linux-5.11/3rdparty/rtl8812au.orig/Makefile 2021-03-07 18:43:20.370675357 +0200
|
||||
+++ linux-5.11/3rdparty/rtl8812au/Makefile 2021-03-07 18:43:51.401141725 +0200
|
||||
@@ -180,9 +180,9 @@ endif
|
||||
|
||||
ifeq ($(CONFIG_RTL8812A)_$(CONFIG_RTL8821A)_$(CONFIG_RTL8814A), y_y_n)
|
||||
|
||||
-EXTRA_CFLAGS += -DDRV_NAME=\"rtl88XXau\"
|
||||
+EXTRA_CFLAGS += -DDRV_NAME=\"rtl8812au\"
|
||||
ifeq ($(CONFIG_USB_HCI), y)
|
||||
-USER_MODULE_NAME = 88XXau
|
||||
+USER_MODULE_NAME = 8812au
|
||||
endif
|
||||
else
|
||||
EXTRA_CFLAGS += -DDRV_NAME=\"rtl8812au\"
|
||||
@@ -2232,11 +2232,11 @@ $(MODULE_NAME)-y += $(_PLATFORM_FILES)
|
||||
|
||||
$(MODULE_NAME)-$(CONFIG_MP_INCLUDED) += core/rtw_mp.o
|
||||
|
||||
-obj-$(CONFIG_88XXAU) := $(MODULE_NAME).o
|
||||
+obj-$(CONFIG_RTL8812AU) := $(MODULE_NAME).o
|
||||
|
||||
else
|
||||
|
||||
-export CONFIG_88XXAU = m
|
||||
+export CONFIG_RTL8812AU = m
|
||||
|
||||
all: modules
|
||||
|
||||
diff -Nurp linux-5.11/3rdparty/rtl8812au.orig/os_dep/linux/ioctl_cfg80211.c linux-5.11/3rdparty/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
--- linux-5.11/3rdparty/rtl8812au.orig/os_dep/linux/ioctl_cfg80211.c 2021-03-07 18:43:20.371675404 +0200
|
||||
+++ linux-5.11/3rdparty/rtl8812au/os_dep/linux/ioctl_cfg80211.c 2021-03-07 18:43:51.402141772 +0200
|
||||
@@ -2646,7 +2646,7 @@ void rtw_cfg80211_unlink_bss(_adapter *p
|
||||
#endif
|
||||
|
||||
if (!wiphy) {
|
||||
- pr_info("88XXAU: rtw_cfg80211_unlink_bss: wiphy is NULL\n");
|
||||
+ pr_info("8812AU: rtw_cfg80211_unlink_bss: wiphy is NULL\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,301 +0,0 @@
|
||||
diff -up linux-5.8/3rdparty/rtl8821ce/core/rtw_security.c.kernel58 linux-5.8/3rdparty/rtl8821ce/core/rtw_security.c
|
||||
--- linux-5.8/3rdparty/rtl8821ce/core/rtw_security.c.kernel58 2020-08-12 18:12:12.492276511 +0200
|
||||
+++ linux-5.8/3rdparty/rtl8821ce/core/rtw_security.c 2020-08-12 18:13:07.202678858 +0200
|
||||
@@ -2133,7 +2133,7 @@ BIP_exit:
|
||||
#ifndef PLATFORM_FREEBSD
|
||||
#if defined(CONFIG_TDLS)
|
||||
/* compress 512-bits */
|
||||
-static int sha256_compress(struct _sha256_state *md, unsigned char *buf)
|
||||
+static int sha256_compress(struct sha256_state *md, unsigned char *buf)
|
||||
{
|
||||
u32 S[8], W[64], t0, t1;
|
||||
u32 t;
|
||||
@@ -2181,7 +2181,7 @@ static int sha256_compress(struct _sha25
|
||||
}
|
||||
|
||||
/* Initialize the hash state */
|
||||
-static void sha256_init(struct _sha256_state *md)
|
||||
+static void sha256_init(struct sha256_state *md)
|
||||
{
|
||||
md->curlen = 0;
|
||||
md->length = 0;
|
||||
@@ -2202,7 +2202,7 @@ static void sha256_init(struct _sha256_s
|
||||
@param inlen The length of the data (octets)
|
||||
@return CRYPT_OK if successful
|
||||
*/
|
||||
-static int sha256_process(struct _sha256_state *md, unsigned char *in,
|
||||
+static int sha256_process(struct sha256_state *md, unsigned char *in,
|
||||
unsigned long inlen)
|
||||
{
|
||||
unsigned long n;
|
||||
@@ -2243,7 +2243,7 @@ static int sha256_process(struct _sha256
|
||||
@param out [out] The destination of the hash (32 bytes)
|
||||
@return CRYPT_OK if successful
|
||||
*/
|
||||
-static int sha256_done(struct _sha256_state *md, unsigned char *out)
|
||||
+static int sha256_done(struct sha256_state *md, unsigned char *out)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -2293,7 +2293,7 @@ static int sha256_done(struct _sha256_st
|
||||
static int sha256_vector(size_t num_elem, u8 *addr[], size_t *len,
|
||||
u8 *mac)
|
||||
{
|
||||
- struct _sha256_state ctx;
|
||||
+ struct sha256_state ctx;
|
||||
size_t i;
|
||||
|
||||
sha256_init(&ctx);
|
||||
diff -up linux-5.8/3rdparty/rtl8821ce/include/rtw_security.h.kernel58 linux-5.8/3rdparty/rtl8821ce/include/rtw_security.h
|
||||
--- linux-5.8/3rdparty/rtl8821ce/include/rtw_security.h.kernel58 2020-08-12 18:12:12.860279218 +0200
|
||||
+++ linux-5.8/3rdparty/rtl8821ce/include/rtw_security.h 2020-08-12 18:13:07.202678858 +0200
|
||||
@@ -249,11 +249,13 @@ struct security_priv {
|
||||
#define SEC_IS_BIP_KEY_INSTALLED(sec) _FALSE
|
||||
#endif
|
||||
|
||||
-struct _sha256_state {
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0))
|
||||
+struct sha256_state {
|
||||
u64 length;
|
||||
u32 state[8], curlen;
|
||||
u8 buf[64];
|
||||
};
|
||||
+#endif
|
||||
|
||||
#define GET_ENCRY_ALGO(psecuritypriv, psta, encry_algo, bmcst)\
|
||||
do {\
|
||||
diff -up linux-5.8/3rdparty/rtl8821ce/os_dep/linux/ioctl_cfg80211.c.kernel58 linux-5.8/3rdparty/rtl8821ce/os_dep/linux/ioctl_cfg80211.c
|
||||
--- linux-5.8/3rdparty/rtl8821ce/os_dep/linux/ioctl_cfg80211.c.kernel58 2020-08-12 18:12:12.867279269 +0200
|
||||
+++ linux-5.8/3rdparty/rtl8821ce/os_dep/linux/ioctl_cfg80211.c 2020-08-12 18:13:07.204678873 +0200
|
||||
@@ -80,7 +80,7 @@
|
||||
#endif
|
||||
|
||||
/*
|
||||
- * In the current design of Wi-Fi driver, it will return success to the system (e.g. supplicant)
|
||||
+ * In the current design of Wi-Fi driver, it will return success to the system (e.g. supplicant)
|
||||
* when Wi-Fi driver decides to abort the scan request in the scan flow by default.
|
||||
* Defining this flag makes Wi-Fi driver to return -EBUSY to the system if Wi-Fi driver is too busy to do the scan.
|
||||
*/
|
||||
@@ -321,7 +321,7 @@ static u8 rtw_chbw_to_cfg80211_chan_def(
|
||||
if (!chan)
|
||||
goto exit;
|
||||
|
||||
- if (bw == CHANNEL_WIDTH_20)
|
||||
+ if (bw == CHANNEL_WIDTH_20)
|
||||
chdef->width = ht ? NL80211_CHAN_WIDTH_20 : NL80211_CHAN_WIDTH_20_NOHT;
|
||||
else if (bw == CHANNEL_WIDTH_40)
|
||||
chdef->width = NL80211_CHAN_WIDTH_40;
|
||||
@@ -355,7 +355,7 @@ static void rtw_get_chbw_from_cfg80211_c
|
||||
rtw_warn_on(1);
|
||||
*ch = 0;
|
||||
return;
|
||||
- }
|
||||
+ }
|
||||
|
||||
switch (chdef->width) {
|
||||
case NL80211_CHAN_WIDTH_20_NOHT:
|
||||
@@ -1577,8 +1577,8 @@ static int rtw_cfg80211_set_encryption(s
|
||||
_rtw_memcpy(padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[16]), 8);
|
||||
_rtw_memcpy(padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[24]), 8);
|
||||
padapter->securitypriv.binstallGrpkey = _TRUE;
|
||||
- if (param->u.crypt.idx < 4)
|
||||
- _rtw_memcpy(padapter->securitypriv.iv_seq[param->u.crypt.idx], param->u.crypt.seq, 8);
|
||||
+ if (param->u.crypt.idx < 4)
|
||||
+ _rtw_memcpy(padapter->securitypriv.iv_seq[param->u.crypt.idx], param->u.crypt.seq, 8);
|
||||
padapter->securitypriv.dot118021XGrpKeyid = param->u.crypt.idx;
|
||||
rtw_set_key(padapter, &padapter->securitypriv, param->u.crypt.idx, 1, _TRUE);
|
||||
|
||||
@@ -1826,7 +1826,7 @@ static int cfg80211_rtw_get_key(struct w
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE)
|
||||
|| (MLME_IS_STA(adapter) && !pairwise)
|
||||
#endif
|
||||
- ) {
|
||||
+ ) {
|
||||
/* WEP key, TX GTK/IGTK, RX GTK/IGTK(for STA mode) */
|
||||
if (is_wep_enc(sec->dot118021XGrpPrivacy)) {
|
||||
if (keyid >= WEP_KEYS)
|
||||
@@ -1915,7 +1915,7 @@ static int cfg80211_rtw_get_key(struct w
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
-
|
||||
+
|
||||
exit:
|
||||
RTW_INFO(FUNC_NDEV_FMT
|
||||
GET_KEY_PARAM_FMT_S
|
||||
@@ -5565,7 +5565,7 @@ release_plink_ctl:
|
||||
if (del_sta) {
|
||||
u8 sta_addr[ETH_ALEN];
|
||||
u8 updated = _FALSE;
|
||||
-
|
||||
+
|
||||
_rtw_memcpy(sta_addr, del_sta->cmn.mac_addr, ETH_ALEN);
|
||||
updated = ap_free_sta(adapter, del_sta, 0, 0, 1);
|
||||
rtw_mesh_expire_peer(stapriv->padapter, sta_addr);
|
||||
@@ -5650,7 +5650,7 @@ static int cfg80211_rtw_dump_station(str
|
||||
else
|
||||
_rtw_memcpy(mac, plink->addr, ETH_ALEN);
|
||||
#endif
|
||||
-
|
||||
+
|
||||
sinfo->filled = 0;
|
||||
|
||||
if (psta) {
|
||||
@@ -7307,11 +7307,22 @@ static void cfg80211_rtw_mgmt_frame_regi
|
||||
#else
|
||||
struct net_device *ndev,
|
||||
#endif
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
|
||||
+ struct mgmt_frame_regs *upd)
|
||||
+#else
|
||||
u16 frame_type, bool reg)
|
||||
+#endif
|
||||
+
|
||||
{
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0))
|
||||
struct net_device *ndev = wdev_to_ndev(wdev);
|
||||
#endif
|
||||
+
|
||||
+/* hardcoded always true, to make it pass compilation */
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
|
||||
+ bool reg = true;
|
||||
+#endif
|
||||
+
|
||||
_adapter *adapter;
|
||||
|
||||
struct rtw_wdev_priv *pwdev_priv;
|
||||
@@ -7330,7 +7341,12 @@ static void cfg80211_rtw_mgmt_frame_regi
|
||||
/* Wait QC Verify */
|
||||
return;
|
||||
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
|
||||
+ switch (upd->interface_stypes) {
|
||||
+#else
|
||||
switch (frame_type) {
|
||||
+#endif
|
||||
+
|
||||
case IEEE80211_STYPE_PROBE_REQ: /* 0x0040 */
|
||||
SET_CFG80211_REPORT_MGMT(pwdev_priv, IEEE80211_STYPE_PROBE_REQ, reg);
|
||||
break;
|
||||
@@ -7682,7 +7698,7 @@ void dump_mesh_config(void *sel, const s
|
||||
RTW_PRINT_SEL(sel, "path_refresh_time:%u\n", conf->path_refresh_time);
|
||||
RTW_PRINT_SEL(sel, "min_discovery_timeout:%u\n", conf->min_discovery_timeout);
|
||||
RTW_PRINT_SEL(sel, "dot11MeshHWMPactivePathTimeout:%u\n", conf->dot11MeshHWMPactivePathTimeout);
|
||||
- RTW_PRINT_SEL(sel, "dot11MeshHWMPpreqMinInterval:%u\n", conf->dot11MeshHWMPpreqMinInterval);
|
||||
+ RTW_PRINT_SEL(sel, "dot11MeshHWMPpreqMinInterval:%u\n", conf->dot11MeshHWMPpreqMinInterval);
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0))
|
||||
RTW_PRINT_SEL(sel, "dot11MeshHWMPperrMinInterval:%u\n", conf->dot11MeshHWMPperrMinInterval);
|
||||
#endif
|
||||
@@ -7697,11 +7713,11 @@ void dump_mesh_config(void *sel, const s
|
||||
RTW_PRINT_SEL(sel, "dot11MeshForwarding:%d\n", conf->dot11MeshForwarding);
|
||||
RTW_PRINT_SEL(sel, "rssi_threshold:%d\n", conf->rssi_threshold);
|
||||
#endif
|
||||
-
|
||||
+
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0))
|
||||
RTW_PRINT_SEL(sel, "ht_opmode:0x%04x\n", conf->ht_opmode);
|
||||
#endif
|
||||
-
|
||||
+
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0))
|
||||
RTW_PRINT_SEL(sel, "dot11MeshHWMPactivePathToRootTimeout:%u\n", conf->dot11MeshHWMPactivePathToRootTimeout);
|
||||
RTW_PRINT_SEL(sel, "dot11MeshHWMProotInterval:%u\n", conf->dot11MeshHWMProotInterval);
|
||||
@@ -7712,7 +7728,7 @@ void dump_mesh_config(void *sel, const s
|
||||
RTW_PRINT_SEL(sel, "power_mode:%s\n", nl80211_mesh_power_mode_str(conf->power_mode));
|
||||
RTW_PRINT_SEL(sel, "dot11MeshAwakeWindowDuration:%u\n", conf->dot11MeshAwakeWindowDuration);
|
||||
#endif
|
||||
-
|
||||
+
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0))
|
||||
RTW_PRINT_SEL(sel, "plink_timeout:%u\n", conf->plink_timeout);
|
||||
#endif
|
||||
@@ -7848,14 +7864,14 @@ static void rtw_cfg80211_mesh_cfg_set(_a
|
||||
if (chk_mesh_attr(NL80211_MESHCONF_HT_OPMODE, mask));
|
||||
#endif
|
||||
#endif
|
||||
-
|
||||
+
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0))
|
||||
if (chk_mesh_attr(NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT, mask))
|
||||
mcfg->dot11MeshHWMPactivePathToRootTimeout = conf->dot11MeshHWMPactivePathToRootTimeout;
|
||||
if (chk_mesh_attr(NL80211_MESHCONF_HWMP_ROOT_INTERVAL, mask))
|
||||
mcfg->dot11MeshHWMProotInterval = conf->dot11MeshHWMProotInterval;
|
||||
if (chk_mesh_attr(NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL, mask))
|
||||
- mcfg->dot11MeshHWMPconfirmationInterval = conf->dot11MeshHWMPconfirmationInterval;
|
||||
+ mcfg->dot11MeshHWMPconfirmationInterval = conf->dot11MeshHWMPconfirmationInterval;
|
||||
#endif
|
||||
|
||||
#if 0 /* TBD */
|
||||
@@ -7913,7 +7929,7 @@ u8 *rtw_cfg80211_construct_mesh_beacon_i
|
||||
#endif
|
||||
if (!ch)
|
||||
goto exit;
|
||||
-
|
||||
+
|
||||
#if defined(CONFIG_80211AC_VHT) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0))
|
||||
vht = ht && ch > 14 && bw >= CHANNEL_WIDTH_80; /* VHT40/VHT20? */
|
||||
#endif
|
||||
@@ -8244,7 +8260,7 @@ static int cfg80211_rtw_join_mesh(struct
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
-
|
||||
+
|
||||
rtw_mesh_work(&adapter->mesh_work);
|
||||
|
||||
exit:
|
||||
@@ -8325,7 +8341,7 @@ static int cfg80211_rtw_del_mpath(struct
|
||||
}
|
||||
} else {
|
||||
rtw_mesh_path_flush_by_iface(adapter);
|
||||
- }
|
||||
+ }
|
||||
|
||||
exit:
|
||||
return ret;
|
||||
@@ -8626,13 +8642,13 @@ int cfg80211_rtw_resume(struct wiphy *wi
|
||||
//rtw_sitesurvey_cmd(padapter, NULL);
|
||||
rtw_sitesurvey_cmd(padapter, &parm);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
-
|
||||
+
|
||||
for (PNOWakeupScanWaitCnt = 0; PNOWakeupScanWaitCnt < 10; PNOWakeupScanWaitCnt++) {
|
||||
if(check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _FALSE)
|
||||
break;
|
||||
rtw_msleep_os(1000);
|
||||
}
|
||||
-
|
||||
+
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
cfg80211_sched_scan_results(padapter->rtw_wdev->wiphy);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
@@ -8640,7 +8656,7 @@ int cfg80211_rtw_resume(struct wiphy *wi
|
||||
}
|
||||
RTW_DBG("<== %s\n",__func__);
|
||||
return 0;
|
||||
-
|
||||
+
|
||||
}
|
||||
#endif /* CONFIG_PNO_SUPPORT */
|
||||
|
||||
@@ -9530,7 +9546,7 @@ int rtw_hostapd_acs_dump_survey(struct w
|
||||
#elif defined(CONFIG_RTW_ACS) && defined(CONFIG_BACKGROUND_NOISE_MONITOR)
|
||||
rtw_cfg80211_set_survey_info_with_clm(padapter, idx, info);
|
||||
#else
|
||||
- RTW_ERR("%s: unknown acs operation!\n", __func__);
|
||||
+ RTW_ERR("%s: unknown acs operation!\n", __func__);
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
@@ -9631,7 +9647,11 @@ static struct cfg80211_ops rtw_cfg80211_
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE)
|
||||
.mgmt_tx = cfg80211_rtw_mgmt_tx,
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
|
||||
+ .update_mgmt_frame_registrations = cfg80211_rtw_mgmt_frame_register,
|
||||
+#else
|
||||
.mgmt_frame_register = cfg80211_rtw_mgmt_frame_register,
|
||||
+#endif
|
||||
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34) && LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35))
|
||||
.action = cfg80211_rtw_mgmt_tx,
|
||||
#endif
|
||||
@@ -1,20 +0,0 @@
|
||||
--- linux-5.3.orig/3rdparty/Kconfig
|
||||
+++ linux-5.3/3rdparty/Kconfig
|
||||
@@ -3,6 +3,7 @@
|
||||
menu "External 3rdparty kernel additions"
|
||||
|
||||
source "3rdparty/ndiswrapper/Kconfig"
|
||||
+source "3rdparty/rtl8821ce/Kconfig"
|
||||
source "3rdparty/rtl8812au/Kconfig"
|
||||
source "3rdparty/rtl8723de/Kconfig"
|
||||
source "3rdparty/viahss/Kconfig"
|
||||
--- linux-5.3.orig/3rdparty/Makefile
|
||||
+++ linux-5.3/3rdparty/Makefile
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
obj- := 3rdparty.o # Dummy rule to force built-in.o to be made
|
||||
obj-$(CONFIG_NDISWRAPPER) += ndiswrapper/
|
||||
+obj-$(CONFIG_RTL8821CE) += rtl8821ce/
|
||||
obj-$(CONFIG_RTL8812AU) += rtl8812au/
|
||||
obj-$(CONFIG_RTL8723DE) += rtl8723de/
|
||||
obj-$(CONFIG_VIAHSS) += viahss/
|
||||
@@ -1,162 +0,0 @@
|
||||
diff -urp linux-5.10/3rdparty/rtl8821ce.orig/core/rtw_btcoex.c linux-5.10/3rdparty/rtl8821ce/core/rtw_btcoex.c
|
||||
--- linux-5.10/3rdparty/rtl8821ce.orig/core/rtw_btcoex.c 2021-01-19 22:18:00.924067581 +0200
|
||||
+++ linux-5.10/3rdparty/rtl8821ce/core/rtw_btcoex.c 2021-01-19 22:22:20.057518961 +0200
|
||||
@@ -1474,15 +1474,20 @@ u8 rtw_btcoex_sendmsgbysocket(_adapter *
|
||||
udpmsg.msg_control = NULL;
|
||||
udpmsg.msg_controllen = 0;
|
||||
udpmsg.msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL;
|
||||
+
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
|
||||
error = sock_sendmsg(pcoex_info->udpsock, &udpmsg);
|
||||
#else
|
||||
error = sock_sendmsg(pcoex_info->udpsock, &udpmsg, msg_size);
|
||||
#endif
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
set_fs(oldfs);
|
||||
+#endif
|
||||
if (error < 0) {
|
||||
RTW_INFO("Error when sendimg msg, error:%d\n", error);
|
||||
return _FAIL;
|
||||
diff -urp linux-5.10/3rdparty/rtl8821ce.orig/core/rtw_wlan_util.c linux-5.10/3rdparty/rtl8821ce/core/rtw_wlan_util.c
|
||||
--- linux-5.10/3rdparty/rtl8821ce.orig/core/rtw_wlan_util.c 2021-01-19 22:18:00.937068206 +0200
|
||||
+++ linux-5.10/3rdparty/rtl8821ce/core/rtw_wlan_util.c 2021-01-19 22:22:20.067519442 +0200
|
||||
@@ -4751,8 +4751,10 @@ int rtw_dev_nlo_info_set(struct pno_nlo_
|
||||
return 0;
|
||||
}
|
||||
|
||||
+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0))
|
||||
fs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+#endif
|
||||
|
||||
source = rtw_zmalloc(2048);
|
||||
|
||||
@@ -4762,7 +4764,9 @@ int rtw_dev_nlo_info_set(struct pno_nlo_
|
||||
rtw_mfree(source, 2048);
|
||||
}
|
||||
|
||||
+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0))
|
||||
set_fs(fs);
|
||||
+#endif
|
||||
filp_close(fp, NULL);
|
||||
|
||||
RTW_INFO("-%s-\n", __func__);
|
||||
diff -urp linux-5.10/3rdparty/rtl8821ce.orig/os_dep/linux/os_intfs.c linux-5.10/3rdparty/rtl8821ce/os_dep/linux/os_intfs.c
|
||||
--- linux-5.10/3rdparty/rtl8821ce.orig/os_dep/linux/os_intfs.c 2021-01-19 22:18:01.078074981 +0200
|
||||
+++ linux-5.10/3rdparty/rtl8821ce/os_dep/linux/os_intfs.c 2021-01-19 22:22:20.068519490 +0200
|
||||
@@ -4008,14 +4008,18 @@ static int route_dump(u32 *gw_addr , int
|
||||
msg.msg_controllen = 0;
|
||||
msg.msg_flags = MSG_DONTWAIT;
|
||||
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+#endif
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
|
||||
err = sock_sendmsg(sock, &msg);
|
||||
#else
|
||||
err = sock_sendmsg(sock, &msg, sizeof(req));
|
||||
#endif
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
set_fs(oldfs);
|
||||
+#endif
|
||||
|
||||
if (err < 0)
|
||||
goto out_sock;
|
||||
@@ -4040,14 +4044,18 @@ restart:
|
||||
iov_iter_init(&msg.msg_iter, READ, &iov, 1, PAGE_SIZE);
|
||||
#endif
|
||||
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+#endif
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
|
||||
err = sock_recvmsg(sock, &msg, MSG_DONTWAIT);
|
||||
#else
|
||||
err = sock_recvmsg(sock, &msg, PAGE_SIZE, MSG_DONTWAIT);
|
||||
#endif
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
set_fs(oldfs);
|
||||
+#endif
|
||||
|
||||
if (err < 0)
|
||||
goto out_sock_pg;
|
||||
@@ -4118,14 +4126,18 @@ done:
|
||||
msg.msg_controllen = 0;
|
||||
msg.msg_flags = MSG_DONTWAIT;
|
||||
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+#endif
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
|
||||
err = sock_sendmsg(sock, &msg);
|
||||
#else
|
||||
err = sock_sendmsg(sock, &msg, sizeof(req));
|
||||
#endif
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
set_fs(oldfs);
|
||||
+#endif
|
||||
|
||||
if (err > 0)
|
||||
goto restart;
|
||||
diff -urp linux-5.10/3rdparty/rtl8821ce.orig/os_dep/osdep_service.c linux-5.10/3rdparty/rtl8821ce/os_dep/osdep_service.c
|
||||
--- linux-5.10/3rdparty/rtl8821ce.orig/os_dep/osdep_service.c 2021-01-19 22:18:01.081075125 +0200
|
||||
+++ linux-5.10/3rdparty/rtl8821ce/os_dep/osdep_service.c 2021-01-19 22:22:20.068519490 +0200
|
||||
@@ -2200,8 +2200,10 @@ static int isFileReadable(const char *pa
|
||||
if (IS_ERR(fp))
|
||||
ret = PTR_ERR(fp);
|
||||
else {
|
||||
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+ #endif
|
||||
|
||||
if (1 != readFile(fp, &buf, 1))
|
||||
ret = PTR_ERR(fp);
|
||||
@@ -2214,7 +2216,9 @@ static int isFileReadable(const char *pa
|
||||
#endif
|
||||
}
|
||||
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
set_fs(oldfs);
|
||||
+#endif
|
||||
filp_close(fp, NULL);
|
||||
}
|
||||
return ret;
|
||||
@@ -2238,10 +2242,14 @@ static int retriveFromFile(const char *p
|
||||
if (0 == ret) {
|
||||
RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp);
|
||||
|
||||
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+ #endif
|
||||
ret = readFile(fp, buf, sz);
|
||||
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
set_fs(oldfs);
|
||||
+ #endif
|
||||
closeFile(fp);
|
||||
|
||||
RTW_INFO("%s readFile, ret:%d\n", __FUNCTION__, ret);
|
||||
@@ -2273,10 +2281,14 @@ static int storeToFile(const char *path,
|
||||
if (0 == ret) {
|
||||
RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp);
|
||||
|
||||
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
+ #endif
|
||||
ret = writeFile(fp, buf, sz);
|
||||
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
|
||||
set_fs(oldfs);
|
||||
+ #endif
|
||||
closeFile(fp);
|
||||
|
||||
RTW_INFO("%s writeFile, ret:%d\n", __FUNCTION__, ret);
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -urp linux/3rdparty/rtl8821ce.orig/os_dep/linux/recv_linux.c linux/3rdparty/rtl8821ce/os_dep/linux/recv_linux.c
|
||||
--- linux/3rdparty/rtl8821ce.orig/os_dep/linux/recv_linux.c 2021-04-26 18:35:37.690041052 +0300
|
||||
+++ linux/3rdparty/rtl8821ce/os_dep/linux/recv_linux.c 2021-04-26 18:53:23.534295732 +0300
|
||||
@@ -353,7 +353,7 @@ static int napi_recv(_adapter *padapter,
|
||||
|
||||
rx_ok = _FALSE;
|
||||
|
||||
-#ifdef CONFIG_RTW_GRO
|
||||
+#if defined(CONFIG_RTW_GRO) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 12, 0)
|
||||
if (pregistrypriv->en_gro) {
|
||||
if (rtw_napi_gro_receive(&padapter->napi, pskb) != GRO_DROP)
|
||||
rx_ok = _TRUE;
|
||||
@@ -1,66 +0,0 @@
|
||||
|
||||
From:
|
||||
https://github.com/aircrack-ng/rtl8812au/commit/47a38b7c736dd9e9baac9eb07a6dceb83429fb49
|
||||
|
||||
diff -Nurp linux-5.15/3rdparty/rtl8821ce.orig/core/rtw_br_ext.c linux-5.15/3rdparty/rtl8821ce/core/rtw_br_ext.c
|
||||
--- linux-5.15/3rdparty/rtl8821ce.orig/core/rtw_br_ext.c 2021-11-08 23:40:48.236272741 +0200
|
||||
+++ linux-5.15/3rdparty/rtl8821ce/core/rtw_br_ext.c 2021-11-08 23:49:12.118046953 +0200
|
||||
@@ -17,7 +17,10 @@
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/if_arp.h>
|
||||
#include <net/ip.h>
|
||||
+ #include <linux/version.h>
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)
|
||||
#include <net/ipx.h>
|
||||
+#endif
|
||||
#include <linux/atalk.h>
|
||||
#include <linux/udp.h>
|
||||
#include <linux/if_pppox.h>
|
||||
@@ -169,6 +172,7 @@ static __inline__ void __nat25_generate_
|
||||
}
|
||||
|
||||
|
||||
+#ifdef _NET_INET_IPX_H_
|
||||
static __inline__ void __nat25_generate_ipx_network_addr_with_node(unsigned char *networkAddr,
|
||||
unsigned int *ipxNetAddr, unsigned char *ipxNodeAddr)
|
||||
{
|
||||
@@ -189,6 +193,7 @@ static __inline__ void __nat25_generate_
|
||||
memcpy(networkAddr + 1, (unsigned char *)ipxNetAddr, 4);
|
||||
memcpy(networkAddr + 5, (unsigned char *)ipxSocketAddr, 2);
|
||||
}
|
||||
+#endif
|
||||
|
||||
|
||||
static __inline__ void __nat25_generate_apple_network_addr(unsigned char *networkAddr,
|
||||
@@ -330,6 +335,7 @@ static __inline__ int __nat25_network_ha
|
||||
x = networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10];
|
||||
|
||||
return x & (NAT25_HASH_SIZE - 1);
|
||||
+#ifdef _NET_INET_IPX_H_
|
||||
} else if (networkAddr[0] == NAT25_IPX) {
|
||||
unsigned long x;
|
||||
|
||||
@@ -337,6 +343,7 @@ static __inline__ int __nat25_network_ha
|
||||
networkAddr[6] ^ networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10];
|
||||
|
||||
return x & (NAT25_HASH_SIZE - 1);
|
||||
+#endif
|
||||
} else if (networkAddr[0] == NAT25_APPLE) {
|
||||
unsigned long x;
|
||||
|
||||
@@ -889,6 +896,7 @@ int nat25_db_handle(_adapter *priv, stru
|
||||
}
|
||||
}
|
||||
|
||||
+#ifdef _NET_INET_IPX_H_
|
||||
/*---------------------------------------------------*/
|
||||
/* Handle IPX and Apple Talk frame */
|
||||
/*---------------------------------------------------*/
|
||||
@@ -1109,6 +1117,7 @@ int nat25_db_handle(_adapter *priv, stru
|
||||
|
||||
return -1;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/*---------------------------------------------------*/
|
||||
/* Handle PPPoE frame */
|
||||
@@ -1,189 +0,0 @@
|
||||
3rdparty/viahss/Kconfig | 14 +++++++
|
||||
3rdparty/viahss/Makefile | 3 +
|
||||
3rdparty/viahss/README.html | 68 ++++++++++++++++++++++++++++++++++++
|
||||
3rdparty/viahss/viahss.c | 83 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 168 insertions(+)
|
||||
diff -Nurp linux-2.6.37/3rdparty/viahss/Kconfig linux-2.6.37.3rdparty/3rdparty/viahss/Kconfig
|
||||
--- linux-2.6.37/3rdparty/viahss/Kconfig 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ linux-2.6.37.3rdparty/3rdparty/viahss/Kconfig 2003-12-01 01:53:51.000000000 +0200
|
||||
@@ -0,0 +1,14 @@
|
||||
+config VIAHSS
|
||||
+ tristate "VIA High Speed Serial"
|
||||
+ depends on SERIAL_CORE && m
|
||||
+ ---help---
|
||||
+ VIA High Speed Serial is a little kernel module (1 KB) which enables
|
||||
+ high speed serial port modes of VIA VT82C686A or VT82C686B
|
||||
+ southbridge-equipped motherboards. With this module, you can use the
|
||||
+ serial port at 230400 bit/s so that you can get the full 128000 bit/s
|
||||
+ from ISDN-TA. The module has been tested with both 686A and 686B
|
||||
+ chipsets.
|
||||
+
|
||||
+ To compile this driver as a module, choose M here: the
|
||||
+ module will be called viahss.
|
||||
+
|
||||
diff -Nurp linux-2.6.37/3rdparty/viahss/Makefile linux-2.6.37.3rdparty/3rdparty/viahss/Makefile
|
||||
--- linux-2.6.37/3rdparty/viahss/Makefile 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ linux-2.6.37.3rdparty/3rdparty/viahss/Makefile 2003-12-01 01:43:23.000000000 +0200
|
||||
@@ -0,0 +1,3 @@
|
||||
+
|
||||
+obj-$(CONFIG_VIAHSS) += viahss.o
|
||||
+
|
||||
diff -Nurp linux-2.6.37/3rdparty/viahss/README.html linux-2.6.37.3rdparty/3rdparty/viahss/README.html
|
||||
--- linux-2.6.37/3rdparty/viahss/README.html 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ linux-2.6.37.3rdparty/3rdparty/viahss/README.html 2003-12-01 01:58:23.000000000 +0200
|
||||
@@ -0,0 +1,68 @@
|
||||
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
+<html>
|
||||
+<head>
|
||||
+ <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
|
||||
+ <title>High speed serial port for VIA VT82C686 chipsets for linux</title>
|
||||
+</head>
|
||||
+<body>
|
||||
+<H3>Setting the serial port speed over 115,200bps</H3>
|
||||
+<br>
|
||||
+If you have motherboard which has VIA VT82C686A or VT82C686B chipset
|
||||
+you can set serial ports in high speed mode with this kernel module.
|
||||
+I use module with external ISDN-TA and haven't had any problems
|
||||
+so far but I cannot guarantee that you won't have buffer overflows if
|
||||
+you use full 230K or 460K speed all the time (FIFO's are still 16550A size).
|
||||
+ISDN with two channels maxes out at 128 Kb which means that it doesn't
|
||||
+really stress serial ports at 230400. Unlike SHSMOD-patches you don't have
|
||||
+to patch serial driver and module takes only 1KB of memory when it's
|
||||
+loaded which should leave enough room for other programs. It should
|
||||
+be also possible to make this work from userspace but accessing
|
||||
+pci devices is so much easier from kernel.
|
||||
+
|
||||
+<H3>How to use module</H3>
|
||||
+Get the <A href=http://www.kati.fi/viahss/viahss-0.92.tar.gz>package</A>
|
||||
+and compile it using included makefiles.
|
||||
+<H3>For 2.4</H3>
|
||||
+If you have kernel in some other location than /usr/src/linux edit Makefile
|
||||
+before compiling. You can also install module with "make install". After
|
||||
+you have loaded module in kernel (use modprobe or insmod) you can set serial
|
||||
+ports to use high speed modes with setserial.<br>
|
||||
+<H3>For 2.5/2.6</H3>
|
||||
+Copy Makefile-2.6 on top of Makefile and do make. After loading module set
|
||||
+serial speed with setserial. (NOTE: This gives a warning on depracated
|
||||
+method).
|
||||
+
|
||||
+<br>
|
||||
+# setserial /dev/ttyS0 spd_cust divisor 0x8002
|
||||
+<br><br>
|
||||
+which sets COM1: speed to 230400. With 0x8001 you should get 460800
|
||||
+but I haven't tested it. If you want to use COM2: use ttyS1 instead of ttyS0.
|
||||
+
|
||||
+After this you should set program which you are using to use 38400 bps
|
||||
+speed which is now actually 230K or 460K. For more information check
|
||||
+setserial man page (spd_cust).
|
||||
+
|
||||
+You can use serial port work as normal if you do<br>
|
||||
+<br>
|
||||
+# setserial /dev/ttyS0 spd_normal <br><br>
|
||||
+After this you can also remove viahss module with rmmod if you need to. Module doesn't intefere with normal serial port usage so you can leave
|
||||
+it loaded if you don't need that extra 1KB which module uses.
|
||||
+<H3>Download</H3>
|
||||
+<A href=http://www.kati.fi/viahss/viahss-0.92.tar.gz>viahss-0.92.tar.gz</A>
|
||||
+
|
||||
+<H3>Acknowledgments</H3>
|
||||
+
|
||||
+Thanks to Kimmo Rintala for help with divisor settings.<br>
|
||||
+I also like to thank Jeff Garzik for help with VIA datasheets.<br>
|
||||
+Port to 2.5/2.6 by Kingsly John with the help of <A href=http://lwn.net>LWN</A>
|
||||
+
|
||||
+<H3>Version History</H3>
|
||||
+0.90 First release<br>
|
||||
+0.91 Fixed Makefile <br>
|
||||
+0.92 Fixed for 2.5/2.6<br>
|
||||
+
|
||||
+<H3>Contact</H3>
|
||||
+
|
||||
+You can reach me by email: <A href=mailto:jrauti@iki.fi>jrauti@iki.fi</A>
|
||||
+</body>
|
||||
+</html>
|
||||
diff -Nurp linux-2.6.37/3rdparty/viahss/viahss.c linux-2.6.37.3rdparty/3rdparty/viahss/viahss.c
|
||||
--- linux-2.6.37/3rdparty/viahss/viahss.c 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ linux-2.6.37.3rdparty/3rdparty/viahss/viahss.c 2003-07-17 09:49:59.000000000 +0300
|
||||
@@ -0,0 +1,83 @@
|
||||
+/*
|
||||
+ * VIA VT 82c686[AB] high speed serial port enabler
|
||||
+ * Version 0.92
|
||||
+ * Copyright (c) 2000-2001 Juhani Rautiainen <jrauti@iki.fi>
|
||||
+ *
|
||||
+ * 0.92:
|
||||
+ * Ported to 2.5/2.6 by Kingsly John
|
||||
+ * - Corrected locking (no more cli() and sti())
|
||||
+ * - New makefile
|
||||
+ *
|
||||
+ * Can be freely distributed and used under the terms of the GNU GPL.
|
||||
+*/
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/config.h>
|
||||
+#include <linux/version.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/pci.h>
|
||||
+
|
||||
+const unsigned short confindex=0x3F0,confdata=0x3F1;
|
||||
+const unsigned char spcidx=0xEE;
|
||||
+
|
||||
+spinlock_t driver_lock = SPIN_LOCK_UNLOCKED;
|
||||
+
|
||||
+static int __init viahss_init(void)
|
||||
+{
|
||||
+ struct pci_dev *pcidev = NULL;
|
||||
+ unsigned char confval,val;
|
||||
+ pcidev = pci_find_device (PCI_VENDOR_ID_VIA,PCI_DEVICE_ID_VIA_82C686,NULL);
|
||||
+ if (pcidev) {
|
||||
+ spin_lock_irq(&driver_lock);
|
||||
+ /* start config */
|
||||
+ pci_read_config_byte(pcidev,0x85,&confval);
|
||||
+ confval |= 0x2;
|
||||
+ pci_write_config_byte (pcidev, 0x85,confval);
|
||||
+ /* activate high speed bits */
|
||||
+ outb(spcidx,confindex); /* set index */
|
||||
+ val = (unsigned char) inb(confdata);
|
||||
+ val |= 0xC0; /* both ports on high speed*/
|
||||
+ outb (spcidx,confindex);
|
||||
+ outb (val,confdata);
|
||||
+ /*stop config*/
|
||||
+ confval &= ~0x2;
|
||||
+ pci_write_config_byte(pcidev, 0x85, confval);
|
||||
+ spin_unlock_irq(&driver_lock);
|
||||
+ printk (KERN_INFO "VIA VT82C686[AB] serial port high speed enabled\n");
|
||||
+ }
|
||||
+ else {
|
||||
+ printk (KERN_INFO "Couldn't locate VIA chipset\n");
|
||||
+ return -ENODEV;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void __exit viahss_exit(void)
|
||||
+{
|
||||
+ struct pci_dev *pcidev = NULL;
|
||||
+ unsigned char confval,val;
|
||||
+ pcidev = pci_find_device (PCI_VENDOR_ID_VIA,PCI_DEVICE_ID_VIA_82C686,NULL);
|
||||
+ if (pcidev) {
|
||||
+ spin_lock_irq(&driver_lock);
|
||||
+ /* start config */
|
||||
+ pci_read_config_byte(pcidev,0x85,&confval);
|
||||
+ confval |= 0x2;
|
||||
+ pci_write_config_byte (pcidev, 0x85,confval);
|
||||
+ /* activate high speed bits */
|
||||
+ outb(spcidx,confindex); /* set index */
|
||||
+ val = (unsigned char) inb(confdata);
|
||||
+ val &= ~0xC0; /* both ports off high speed*/
|
||||
+ outb (spcidx,confindex);
|
||||
+ outb (val,confdata);
|
||||
+ /*stop config*/
|
||||
+ confval &= ~0x2;
|
||||
+ pci_write_config_byte(pcidev, 0x85, confval);
|
||||
+ spin_unlock_irq(&driver_lock);
|
||||
+ printk (KERN_INFO "VIA VT82C686[AB] serial port high speed disabled\n");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+module_init(viahss_init);
|
||||
+module_exit(viahss_exit);
|
||||
+MODULE_DESCRIPTION("VIA VT82C686[AB] high speed serial port enabler");
|
||||
+MODULE_AUTHOR("Juhani Rautiainen <jrauti@iki.fi>");
|
||||
@@ -1,20 +0,0 @@
|
||||
--- linux-2.6.35-rc6-git-mnb0.1/3rdparty/viahss/viahss.c.orig 2010-07-30 21:17:30.000000000 +0300
|
||||
+++ linux-2.6.35-rc6-git-mnb0.1/3rdparty/viahss/viahss.c 2010-07-30 23:10:21.324978822 +0300
|
||||
@@ -25,7 +25,7 @@ static int __init viahss_init(void)
|
||||
{
|
||||
struct pci_dev *pcidev = NULL;
|
||||
unsigned char confval,val;
|
||||
- pcidev = pci_find_device (PCI_VENDOR_ID_VIA,PCI_DEVICE_ID_VIA_82C686,NULL);
|
||||
+ pcidev = pci_get_device (PCI_VENDOR_ID_VIA,PCI_DEVICE_ID_VIA_82C686,NULL);
|
||||
if (pcidev) {
|
||||
spin_lock_irq(&driver_lock);
|
||||
/* start config */
|
||||
@@ -55,7 +55,7 @@ static void __exit viahss_exit(void)
|
||||
{
|
||||
struct pci_dev *pcidev = NULL;
|
||||
unsigned char confval,val;
|
||||
- pcidev = pci_find_device (PCI_VENDOR_ID_VIA,PCI_DEVICE_ID_VIA_82C686,NULL);
|
||||
+ pcidev = pci_get_device (PCI_VENDOR_ID_VIA,PCI_DEVICE_ID_VIA_82C686,NULL);
|
||||
if (pcidev) {
|
||||
spin_lock_irq(&driver_lock);
|
||||
/* start config */
|
||||
@@ -1,19 +0,0 @@
|
||||
|
||||
fix build with 3.0
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
3rdparty/viahss/viahss.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/3rdparty/viahss/viahss.c.orig 2011-07-15 02:37:27.000000000 +0300
|
||||
+++ a/3rdparty/viahss/viahss.c 2011-07-15 13:48:13.204291256 +0300
|
||||
@@ -19,7 +19,7 @@
|
||||
const unsigned short confindex=0x3F0,confdata=0x3F1;
|
||||
const unsigned char spcidx=0xEE;
|
||||
|
||||
-spinlock_t driver_lock = SPIN_LOCK_UNLOCKED;
|
||||
+DEFINE_SPINLOCK(driver_lock);
|
||||
|
||||
static int __init viahss_init(void)
|
||||
{
|
||||
@@ -1,16 +0,0 @@
|
||||
--- linux/3rdparty/Kconfig.orig 2019-05-31 23:33:39.796256889 +0300
|
||||
+++ linux/3rdparty/Kconfig 2019-05-31 23:37:16.378970236 +0300
|
||||
@@ -5,5 +5,6 @@ menu "External 3rdparty kernel additions"
|
||||
source "3rdparty/ndiswrapper/Kconfig"
|
||||
source "3rdparty/rtl8812au/Kconfig"
|
||||
source "3rdparty/rtl8723de/Kconfig"
|
||||
+source "3rdparty/viahss/Kconfig"
|
||||
|
||||
endmenu
|
||||
--- linux/3rdparty/Makefile.orig 2019-05-31 23:33:57.608644657 +0300
|
||||
+++ linux/3rdparty/Makefile 2019-05-31 23:37:39.711477814 +0300
|
||||
@@ -4,3 +4,4 @@ obj- := 3rdparty.o # Dummy rule to forc
|
||||
obj-$(CONFIG_NDISWRAPPER) += ndiswrapper/
|
||||
obj-$(CONFIG_RTL8812AU) += rtl8812au/
|
||||
obj-$(CONFIG_RTL8723DE) += rtl8723de/
|
||||
+obj-$(CONFIG_VIAHSS) += viahss/
|
||||
@@ -1,18 +0,0 @@
|
||||
linux/config.h is gone in 2.6.21
|
||||
|
||||
---
|
||||
3rdparty/viahss/viahss.c | 1 0 + 1 - 0 !
|
||||
1 files changed, 1 deletion(-)
|
||||
|
||||
Index: linux-2.6.21/3rdparty/viahss/viahss.c
|
||||
===================================================================
|
||||
--- linux-2.6.21.orig/3rdparty/viahss/viahss.c 2003-07-17 08:49:59.000000000 +0200
|
||||
+++ linux-2.6.21/3rdparty/viahss/viahss.c 2007-05-14 17:06:56.000000000 +0200
|
||||
@@ -12,7 +12,6 @@
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
-#include <linux/config.h>
|
||||
#include <linux/version.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/pci.h>
|
||||
@@ -1,7 +0,0 @@
|
||||
--- linux-2.6.25/3rdparty/viahss/viahss.c.orig 2008-06-28 22:50:05.000000000 +0300
|
||||
+++ linux-2.6.25/3rdparty/viahss/viahss.c 2008-06-29 14:26:55.000000000 +0300
|
||||
@@ -80,3 +80,4 @@ module_init(viahss_init);
|
||||
module_exit(viahss_exit);
|
||||
MODULE_DESCRIPTION("VIA VT82C686[AB] high speed serial port enabler");
|
||||
MODULE_AUTHOR("Juhani Rautiainen <jrauti@iki.fi>");
|
||||
+MODULE_LICENSE("GPL");
|
||||
@@ -1,37 +0,0 @@
|
||||
From 84ecc2f6eb1cb12e6d44818f94fa49b50f06e6ac Mon Sep 17 00:00:00 2001
|
||||
From: Gen Zhang <blackgod016574@gmail.com>
|
||||
Date: Thu, 23 May 2019 08:34:52 +0800
|
||||
Subject: consolemap: Fix a memory leaking bug in drivers/tty/vt/consolemap.c
|
||||
|
||||
In function con_insert_unipair(), when allocation for p2 and p1[n]
|
||||
fails, ENOMEM is returned, but previously allocated p1 is not freed,
|
||||
remains as leaking memory. Thus we should free p1 as well when this
|
||||
allocation fails.
|
||||
|
||||
Signed-off-by: Gen Zhang <blackgod016574@gmail.com>
|
||||
Reviewed-by: Kees Cook <keescook@chromium.org>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/tty/vt/consolemap.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/tty/vt/consolemap.c b/drivers/tty/vt/consolemap.c
|
||||
index b28aa0d289f8..79fcc96cc7c0 100644
|
||||
--- a/drivers/tty/vt/consolemap.c
|
||||
+++ b/drivers/tty/vt/consolemap.c
|
||||
@@ -489,7 +489,11 @@ con_insert_unipair(struct uni_pagedir *p, u_short unicode, u_short fontpos)
|
||||
p2 = p1[n = (unicode >> 6) & 0x1f];
|
||||
if (!p2) {
|
||||
p2 = p1[n] = kmalloc_array(64, sizeof(u16), GFP_KERNEL);
|
||||
- if (!p2) return -ENOMEM;
|
||||
+ if (!p2) {
|
||||
+ kfree(p1);
|
||||
+ p->uni_pgdir[n] = NULL;
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
memset(p2, 0xff, 64*sizeof(u16)); /* No glyphs for the characters (yet) */
|
||||
}
|
||||
|
||||
--
|
||||
cgit 1.2-0.3.lf.el7
|
||||
|
||||
-305
@@ -1,305 +0,0 @@
|
||||
From MAILER-DAEMON Wed Oct 14 16:34:37 2020
|
||||
From: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
|
||||
To: netdev@vger.kernel.org
|
||||
Cc: Gerrit Renker <gerrit@erg.abdn.ac.uk>, "David S. Miller" <davem@davemloft.net>, Jakub Kicinski <kuba@kernel.org>, Thadeu Lima de Souza Cascardo <cascardo@canonical.com>, "Gustavo A. R. Silva" <gustavoars@kernel.org>, "Alexander A. Klimov" <grandmaster@al2klimov.de>, Kees Cook <keescook@chromium.org>, Eric Dumazet <edumazet@google.com>, Alexey Kodanev <alexey.kodanev@oracle.com>, dccp@vger.kernel.org, linux-kernel@vger.kernel.org
|
||||
Subject: [PATCH 1/2] dccp: ccid: move timers to struct dccp_sock
|
||||
Date: Tue, 13 Oct 2020 19:18:48 +0200
|
||||
Message-Id: <20201013171849.236025-2-kleber.souza@canonical.com>
|
||||
In-Reply-To: <20201013171849.236025-1-kleber.souza@canonical.com>
|
||||
References: <20201013171849.236025-1-kleber.souza@canonical.com>
|
||||
List-ID: <linux-kernel.vger.kernel.org>
|
||||
X-Mailing-List: linux-kernel@vger.kernel.org
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
From: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
|
||||
|
||||
When dccps_hc_tx_ccid is freed, ccid timers may still trigger. The reason
|
||||
del_timer_sync can't be used is because this relies on keeping a reference
|
||||
to struct sock. But as we keep a pointer to dccps_hc_tx_ccid and free that
|
||||
during disconnect, the timer should really belong to struct dccp_sock.
|
||||
|
||||
This addresses CVE-2020-16119.
|
||||
|
||||
Fixes: 839a6094140a (net: dccp: Convert timers to use timer_setup())
|
||||
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
|
||||
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
|
||||
Acked-bd: Richard Sailer <richard_siegfried@systemli.org>
|
||||
---
|
||||
include/linux/dccp.h | 2 ++
|
||||
net/dccp/ccids/ccid2.c | 32 +++++++++++++++++++-------------
|
||||
net/dccp/ccids/ccid3.c | 30 ++++++++++++++++++++----------
|
||||
3 files changed, 41 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/include/linux/dccp.h b/include/linux/dccp.h
|
||||
index 07e547c02fd8..504afa1a4be6 100644
|
||||
--- a/include/linux/dccp.h
|
||||
+++ b/include/linux/dccp.h
|
||||
@@ -259,6 +259,7 @@ struct dccp_ackvec;
|
||||
* @dccps_sync_scheduled - flag which signals "send out-of-band message soon"
|
||||
* @dccps_xmitlet - tasklet scheduled by the TX CCID to dequeue data packets
|
||||
* @dccps_xmit_timer - used by the TX CCID to delay sending (rate-based pacing)
|
||||
+ * @dccps_ccid_timer - used by the CCIDs
|
||||
* @dccps_syn_rtt - RTT sample from Request/Response exchange (in usecs)
|
||||
*/
|
||||
struct dccp_sock {
|
||||
@@ -303,6 +304,7 @@ struct dccp_sock {
|
||||
__u8 dccps_sync_scheduled:1;
|
||||
struct tasklet_struct dccps_xmitlet;
|
||||
struct timer_list dccps_xmit_timer;
|
||||
+ struct timer_list dccps_ccid_timer;
|
||||
};
|
||||
|
||||
static inline struct dccp_sock *dccp_sk(const struct sock *sk)
|
||||
diff --git a/net/dccp/ccids/ccid2.c b/net/dccp/ccids/ccid2.c
|
||||
index 3da1f77bd039..dbca1f1e2449 100644
|
||||
--- a/net/dccp/ccids/ccid2.c
|
||||
+++ b/net/dccp/ccids/ccid2.c
|
||||
@@ -126,21 +126,26 @@ static void dccp_tasklet_schedule(struct sock *sk)
|
||||
|
||||
static void ccid2_hc_tx_rto_expire(struct timer_list *t)
|
||||
{
|
||||
- struct ccid2_hc_tx_sock *hc = from_timer(hc, t, tx_rtotimer);
|
||||
- struct sock *sk = hc->sk;
|
||||
- const bool sender_was_blocked = ccid2_cwnd_network_limited(hc);
|
||||
+ struct dccp_sock *dp = from_timer(dp, t, dccps_ccid_timer);
|
||||
+ struct sock *sk = (struct sock *)dp;
|
||||
+ struct ccid2_hc_tx_sock *hc;
|
||||
+ bool sender_was_blocked;
|
||||
|
||||
bh_lock_sock(sk);
|
||||
+
|
||||
+ if (inet_sk_state_load(sk) == DCCP_CLOSED)
|
||||
+ goto out;
|
||||
+
|
||||
+ hc = ccid_priv(dp->dccps_hc_tx_ccid);
|
||||
+ sender_was_blocked = ccid2_cwnd_network_limited(hc);
|
||||
+
|
||||
if (sock_owned_by_user(sk)) {
|
||||
- sk_reset_timer(sk, &hc->tx_rtotimer, jiffies + HZ / 5);
|
||||
+ sk_reset_timer(sk, &dp->dccps_ccid_timer, jiffies + HZ / 5);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ccid2_pr_debug("RTO_EXPIRE\n");
|
||||
|
||||
- if (sk->sk_state == DCCP_CLOSED)
|
||||
- goto out;
|
||||
-
|
||||
/* back-off timer */
|
||||
hc->tx_rto <<= 1;
|
||||
if (hc->tx_rto > DCCP_RTO_MAX)
|
||||
@@ -166,7 +171,7 @@ static void ccid2_hc_tx_rto_expire(struct timer_list *t)
|
||||
if (sender_was_blocked)
|
||||
dccp_tasklet_schedule(sk);
|
||||
/* restart backed-off timer */
|
||||
- sk_reset_timer(sk, &hc->tx_rtotimer, jiffies + hc->tx_rto);
|
||||
+ sk_reset_timer(sk, &dp->dccps_ccid_timer, jiffies + hc->tx_rto);
|
||||
out:
|
||||
bh_unlock_sock(sk);
|
||||
sock_put(sk);
|
||||
@@ -330,7 +335,7 @@ static void ccid2_hc_tx_packet_sent(struct sock *sk, unsigned int len)
|
||||
}
|
||||
#endif
|
||||
|
||||
- sk_reset_timer(sk, &hc->tx_rtotimer, jiffies + hc->tx_rto);
|
||||
+ sk_reset_timer(sk, &dp->dccps_ccid_timer, jiffies + hc->tx_rto);
|
||||
|
||||
#ifdef CONFIG_IP_DCCP_CCID2_DEBUG
|
||||
do {
|
||||
@@ -700,9 +705,9 @@ static void ccid2_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
|
||||
|
||||
/* restart RTO timer if not all outstanding data has been acked */
|
||||
if (hc->tx_pipe == 0)
|
||||
- sk_stop_timer(sk, &hc->tx_rtotimer);
|
||||
+ sk_stop_timer(sk, &dp->dccps_ccid_timer);
|
||||
else
|
||||
- sk_reset_timer(sk, &hc->tx_rtotimer, jiffies + hc->tx_rto);
|
||||
+ sk_reset_timer(sk, &dp->dccps_ccid_timer, jiffies + hc->tx_rto);
|
||||
done:
|
||||
/* check if incoming Acks allow pending packets to be sent */
|
||||
if (sender_was_blocked && !ccid2_cwnd_network_limited(hc))
|
||||
@@ -737,17 +742,18 @@ static int ccid2_hc_tx_init(struct ccid *ccid, struct sock *sk)
|
||||
hc->tx_last_cong = hc->tx_lsndtime = hc->tx_cwnd_stamp = ccid2_jiffies32;
|
||||
hc->tx_cwnd_used = 0;
|
||||
hc->sk = sk;
|
||||
- timer_setup(&hc->tx_rtotimer, ccid2_hc_tx_rto_expire, 0);
|
||||
+ timer_setup(&dp->dccps_ccid_timer, ccid2_hc_tx_rto_expire, 0);
|
||||
INIT_LIST_HEAD(&hc->tx_av_chunks);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ccid2_hc_tx_exit(struct sock *sk)
|
||||
{
|
||||
+ struct dccp_sock *dp = dccp_sk(sk);
|
||||
struct ccid2_hc_tx_sock *hc = ccid2_hc_tx_sk(sk);
|
||||
int i;
|
||||
|
||||
- sk_stop_timer(sk, &hc->tx_rtotimer);
|
||||
+ sk_stop_timer(sk, &dp->dccps_ccid_timer);
|
||||
|
||||
for (i = 0; i < hc->tx_seqbufc; i++)
|
||||
kfree(hc->tx_seqbuf[i]);
|
||||
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c
|
||||
index b9ee1a4a8955..685f4d046c0d 100644
|
||||
--- a/net/dccp/ccids/ccid3.c
|
||||
+++ b/net/dccp/ccids/ccid3.c
|
||||
@@ -184,17 +184,24 @@ static inline void ccid3_hc_tx_update_win_count(struct ccid3_hc_tx_sock *hc,
|
||||
|
||||
static void ccid3_hc_tx_no_feedback_timer(struct timer_list *t)
|
||||
{
|
||||
- struct ccid3_hc_tx_sock *hc = from_timer(hc, t, tx_no_feedback_timer);
|
||||
- struct sock *sk = hc->sk;
|
||||
+ struct dccp_sock *dp = from_timer(dp, t, dccps_ccid_timer);
|
||||
+ struct ccid3_hc_tx_sock *hc;
|
||||
+ struct sock *sk = (struct sock *)dp;
|
||||
unsigned long t_nfb = USEC_PER_SEC / 5;
|
||||
|
||||
bh_lock_sock(sk);
|
||||
+
|
||||
+ if (inet_sk_state_load(sk) == DCCP_CLOSED)
|
||||
+ goto out;
|
||||
+
|
||||
if (sock_owned_by_user(sk)) {
|
||||
/* Try again later. */
|
||||
/* XXX: set some sensible MIB */
|
||||
goto restart_timer;
|
||||
}
|
||||
|
||||
+ hc = ccid_priv(dp->dccps_hc_tx_ccid);
|
||||
+
|
||||
ccid3_pr_debug("%s(%p, state=%s) - entry\n", dccp_role(sk), sk,
|
||||
ccid3_tx_state_name(hc->tx_state));
|
||||
|
||||
@@ -250,8 +257,8 @@ static void ccid3_hc_tx_no_feedback_timer(struct timer_list *t)
|
||||
t_nfb = max(hc->tx_t_rto, 2 * hc->tx_t_ipi);
|
||||
|
||||
restart_timer:
|
||||
- sk_reset_timer(sk, &hc->tx_no_feedback_timer,
|
||||
- jiffies + usecs_to_jiffies(t_nfb));
|
||||
+ sk_reset_timer(sk, &dp->dccps_ccid_timer,
|
||||
+ jiffies + usecs_to_jiffies(t_nfb));
|
||||
out:
|
||||
bh_unlock_sock(sk);
|
||||
sock_put(sk);
|
||||
@@ -280,7 +287,7 @@ static int ccid3_hc_tx_send_packet(struct sock *sk, struct sk_buff *skb)
|
||||
return -EBADMSG;
|
||||
|
||||
if (hc->tx_state == TFRC_SSTATE_NO_SENT) {
|
||||
- sk_reset_timer(sk, &hc->tx_no_feedback_timer, (jiffies +
|
||||
+ sk_reset_timer(sk, &dp->dccps_ccid_timer, (jiffies +
|
||||
usecs_to_jiffies(TFRC_INITIAL_TIMEOUT)));
|
||||
hc->tx_last_win_count = 0;
|
||||
hc->tx_t_last_win_count = now;
|
||||
@@ -354,6 +361,7 @@ static void ccid3_hc_tx_packet_sent(struct sock *sk, unsigned int len)
|
||||
static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
struct ccid3_hc_tx_sock *hc = ccid3_hc_tx_sk(sk);
|
||||
+ struct dccp_sock *dp = dccp_sk(sk);
|
||||
struct tfrc_tx_hist_entry *acked;
|
||||
ktime_t now;
|
||||
unsigned long t_nfb;
|
||||
@@ -420,7 +428,7 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
|
||||
(unsigned int)(hc->tx_x >> 6));
|
||||
|
||||
/* unschedule no feedback timer */
|
||||
- sk_stop_timer(sk, &hc->tx_no_feedback_timer);
|
||||
+ sk_stop_timer(sk, &dp->dccps_ccid_timer);
|
||||
|
||||
/*
|
||||
* As we have calculated new ipi, delta, t_nom it is possible
|
||||
@@ -445,8 +453,8 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
|
||||
"expire in %lu jiffies (%luus)\n",
|
||||
dccp_role(sk), sk, usecs_to_jiffies(t_nfb), t_nfb);
|
||||
|
||||
- sk_reset_timer(sk, &hc->tx_no_feedback_timer,
|
||||
- jiffies + usecs_to_jiffies(t_nfb));
|
||||
+ sk_reset_timer(sk, &dp->dccps_ccid_timer,
|
||||
+ jiffies + usecs_to_jiffies(t_nfb));
|
||||
}
|
||||
|
||||
static int ccid3_hc_tx_parse_options(struct sock *sk, u8 packet_type,
|
||||
@@ -488,21 +496,23 @@ static int ccid3_hc_tx_parse_options(struct sock *sk, u8 packet_type,
|
||||
|
||||
static int ccid3_hc_tx_init(struct ccid *ccid, struct sock *sk)
|
||||
{
|
||||
+ struct dccp_sock *dp = dccp_sk(sk);
|
||||
struct ccid3_hc_tx_sock *hc = ccid_priv(ccid);
|
||||
|
||||
hc->tx_state = TFRC_SSTATE_NO_SENT;
|
||||
hc->tx_hist = NULL;
|
||||
hc->sk = sk;
|
||||
- timer_setup(&hc->tx_no_feedback_timer,
|
||||
+ timer_setup(&dp->dccps_ccid_timer,
|
||||
ccid3_hc_tx_no_feedback_timer, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ccid3_hc_tx_exit(struct sock *sk)
|
||||
{
|
||||
+ struct dccp_sock *dp = dccp_sk(sk);
|
||||
struct ccid3_hc_tx_sock *hc = ccid3_hc_tx_sk(sk);
|
||||
|
||||
- sk_stop_timer(sk, &hc->tx_no_feedback_timer);
|
||||
+ sk_stop_timer(sk, &dp->dccps_ccid_timer);
|
||||
tfrc_tx_hist_purge(&hc->tx_hist);
|
||||
}
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
||||
|
||||
From MAILER-DAEMON Wed Oct 14 16:34:37 2020
|
||||
From: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
|
||||
To: netdev@vger.kernel.org
|
||||
Cc: Gerrit Renker <gerrit@erg.abdn.ac.uk>, "David S. Miller" <davem@davemloft.net>, Jakub Kicinski <kuba@kernel.org>, Thadeu Lima de Souza Cascardo <cascardo@canonical.com>, "Gustavo A. R. Silva" <gustavoars@kernel.org>, "Alexander A. Klimov" <grandmaster@al2klimov.de>, Kees Cook <keescook@chromium.org>, Eric Dumazet <edumazet@google.com>, Alexey Kodanev <alexey.kodanev@oracle.com>, dccp@vger.kernel.org, linux-kernel@vger.kernel.org
|
||||
Subject: [PATCH 2/2] Revert "dccp: don't free ccid2_hc_tx_sock struct in dccp_disconnect()"
|
||||
Date: Tue, 13 Oct 2020 19:18:49 +0200
|
||||
Message-Id: <20201013171849.236025-3-kleber.souza@canonical.com>
|
||||
In-Reply-To: <20201013171849.236025-1-kleber.souza@canonical.com>
|
||||
References: <20201013171849.236025-1-kleber.souza@canonical.com>
|
||||
List-ID: <linux-kernel.vger.kernel.org>
|
||||
X-Mailing-List: linux-kernel@vger.kernel.org
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
From: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
|
||||
|
||||
This reverts commit 2677d20677314101293e6da0094ede7b5526d2b1.
|
||||
|
||||
This fixes an issue that after disconnect, dccps_hc_tx_ccid will still be
|
||||
kept, allowing the socket to be reused as a listener socket, and the cloned
|
||||
socket will free its dccps_hc_tx_ccid, leading to a later use after free,
|
||||
when the listener socket is closed.
|
||||
|
||||
This addresses CVE-2020-16119.
|
||||
|
||||
Fixes: 2677d2067731 (dccp: don't free ccid2_hc_tx_sock struct in dccp_disconnect())
|
||||
Reported-by: Hadar Manor
|
||||
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
|
||||
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
|
||||
Acked-by: Richard Sailer <richard_siegfried@systemli.org>
|
||||
---
|
||||
net/dccp/proto.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/net/dccp/proto.c b/net/dccp/proto.c
|
||||
index 6d705d90c614..359e848dba6c 100644
|
||||
--- a/net/dccp/proto.c
|
||||
+++ b/net/dccp/proto.c
|
||||
@@ -279,7 +279,9 @@ int dccp_disconnect(struct sock *sk, int flags)
|
||||
|
||||
dccp_clear_xmit_timers(sk);
|
||||
ccid_hc_rx_delete(dp->dccps_hc_rx_ccid, sk);
|
||||
+ ccid_hc_tx_delete(dp->dccps_hc_tx_ccid, sk);
|
||||
dp->dccps_hc_rx_ccid = NULL;
|
||||
+ dp->dccps_hc_tx_ccid = NULL;
|
||||
|
||||
__skb_queue_purge(&sk->sk_receive_queue);
|
||||
__skb_queue_purge(&sk->sk_write_queue);
|
||||
--
|
||||
2.25.1
|
||||
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
From 894c792e3e24c2c15d8aac15aa89ec144468e1b0 Mon Sep 17 00:00:00 2001
|
||||
From: Palmer Dabbelt <palmer@rivosinc.com>
|
||||
Date: Thu, 13 Oct 2022 14:46:36 -0700
|
||||
Subject: [PATCH 2/6] MAINTAINERS: git://github -> https://github.com for
|
||||
terrelln
|
||||
|
||||
Github deprecated the git:// links about a year ago, so let's move to
|
||||
the https:// URLs instead.
|
||||
|
||||
Reported-by: Conor Dooley <conor.dooley@microchip.com>
|
||||
Link: https://github.blog/2021-09-01-improving-git-protocol-security-github/
|
||||
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
|
||||
Signed-off-by: Nick Terrell <terrelln@fb.com>
|
||||
---
|
||||
MAINTAINERS | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index e04d944005ba..4a2b7a9325dc 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -22800,7 +22800,7 @@ ZSTD
|
||||
M: Nick Terrell <terrelln@fb.com>
|
||||
S: Maintained
|
||||
B: https://github.com/facebook/zstd/issues
|
||||
-T: git git://github.com/terrelln/linux.git
|
||||
+T: git https://github.com/terrelln/linux.git
|
||||
F: include/linux/zstd*
|
||||
F: lib/zstd/
|
||||
F: lib/decompress_unzstd.c
|
||||
--
|
||||
2.30.6
|
||||
|
||||
@@ -1,284 +0,0 @@
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
aufs5.x-rcN standalone patch
|
||||
|
||||
diff --git a/fs/dcache.c b/fs/dcache.c
|
||||
index ddca6240e0db4..30dec552278dc 100644
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -1390,6 +1390,7 @@ void d_walk(struct dentry *parent, void *data,
|
||||
seq = 1;
|
||||
goto again;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(d_walk);
|
||||
|
||||
struct check_mount {
|
||||
struct vfsmount *mnt;
|
||||
@@ -2935,6 +2936,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
|
||||
|
||||
write_sequnlock(&rename_lock);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(d_exchange);
|
||||
|
||||
/**
|
||||
* d_ancestor - search for an ancestor
|
||||
diff --git a/fs/exec.c b/fs/exec.c
|
||||
index 547a2390baf54..18d51d0face68 100644
|
||||
--- a/fs/exec.c
|
||||
+++ b/fs/exec.c
|
||||
@@ -113,6 +113,7 @@ bool path_noexec(const struct path *path)
|
||||
return (path->mnt->mnt_flags & MNT_NOEXEC) ||
|
||||
(path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(path_noexec);
|
||||
|
||||
#ifdef CONFIG_USELIB
|
||||
/*
|
||||
diff --git a/fs/fcntl.c b/fs/fcntl.c
|
||||
index 073ca6af500f3..b18afdf81e762 100644
|
||||
--- a/fs/fcntl.c
|
||||
+++ b/fs/fcntl.c
|
||||
@@ -85,6 +85,7 @@ int setfl(int fd, struct file *filp, unsigned long arg)
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(setfl);
|
||||
|
||||
static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
|
||||
int force)
|
||||
diff --git a/fs/file_table.c b/fs/file_table.c
|
||||
index 709ada3151da5..27a3e3c9f2a82 100644
|
||||
--- a/fs/file_table.c
|
||||
+++ b/fs/file_table.c
|
||||
@@ -162,6 +162,7 @@ struct file *alloc_empty_file(int flags, const struct cred *cred)
|
||||
}
|
||||
return ERR_PTR(-ENFILE);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(alloc_empty_file);
|
||||
|
||||
/*
|
||||
* Variant of alloc_empty_file() that doesn't check and modify nr_files.
|
||||
@@ -376,6 +377,7 @@ void __fput_sync(struct file *file)
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(fput);
|
||||
+EXPORT_SYMBOL_GPL(__fput_sync);
|
||||
|
||||
void __init files_init(void)
|
||||
{
|
||||
diff --git a/fs/inode.c b/fs/inode.c
|
||||
index e7f0c614a58f3..6fe0a92a4c93c 100644
|
||||
--- a/fs/inode.c
|
||||
+++ b/fs/inode.c
|
||||
@@ -1776,6 +1776,7 @@ int update_time(struct inode *inode, struct timespec64 *time, int flags)
|
||||
return inode->i_op->update_time(inode, time, flags);
|
||||
return generic_update_time(inode, time, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(update_time);
|
||||
|
||||
/**
|
||||
* touch_atime - update the access time
|
||||
diff --git a/fs/namespace.c b/fs/namespace.c
|
||||
index 451dee24a546a..38078cbede431 100644
|
||||
--- a/fs/namespace.c
|
||||
+++ b/fs/namespace.c
|
||||
@@ -431,6 +431,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
|
||||
mnt_dec_writers(real_mount(mnt));
|
||||
preempt_enable();
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(__mnt_drop_write);
|
||||
|
||||
/**
|
||||
* mnt_drop_write - give up write access to a mount
|
||||
@@ -797,6 +798,7 @@ int is_current_mnt_ns(struct vfsmount *mnt)
|
||||
{
|
||||
return check_mnt(real_mount(mnt));
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(is_current_mnt_ns);
|
||||
|
||||
/*
|
||||
* vfsmount lock must be held for write
|
||||
@@ -1961,6 +1963,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(iterate_mounts);
|
||||
|
||||
static void lock_mnt_tree(struct mount *mnt)
|
||||
{
|
||||
diff --git a/fs/notify/group.c b/fs/notify/group.c
|
||||
index a4a4b1c64d32a..86dc2efb1850c 100644
|
||||
--- a/fs/notify/group.c
|
||||
+++ b/fs/notify/group.c
|
||||
@@ -100,6 +100,7 @@ void fsnotify_get_group(struct fsnotify_group *group)
|
||||
{
|
||||
refcount_inc(&group->refcnt);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_get_group);
|
||||
|
||||
/*
|
||||
* Drop a reference to a group. Free it if it's through.
|
||||
diff --git a/fs/open.c b/fs/open.c
|
||||
index 9af548fb841b0..2ff09b709f7bf 100644
|
||||
--- a/fs/open.c
|
||||
+++ b/fs/open.c
|
||||
@@ -65,6 +65,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
|
||||
inode_unlock(dentry->d_inode);
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_truncate);
|
||||
|
||||
long vfs_truncate(const struct path *path, loff_t length)
|
||||
{
|
||||
diff --git a/fs/read_write.c b/fs/read_write.c
|
||||
index 75f764b434184..7582bb3fb634b 100644
|
||||
--- a/fs/read_write.c
|
||||
+++ b/fs/read_write.c
|
||||
@@ -503,6 +503,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
|
||||
inc_syscr(current);
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(vfs_read);
|
||||
|
||||
static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos)
|
||||
{
|
||||
@@ -613,6 +614,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
|
||||
file_end_write(file);
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(vfs_write);
|
||||
|
||||
/* file_ppos returns &file->f_pos or NULL if file is stream */
|
||||
static inline loff_t *file_ppos(struct file *file)
|
||||
diff --git a/fs/splice.c b/fs/splice.c
|
||||
index 55b5356262085..c13ac0fbac318 100644
|
||||
--- a/fs/splice.c
|
||||
+++ b/fs/splice.c
|
||||
@@ -763,6 +763,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
return warn_unsupported(out, "write");
|
||||
return out->f_op->splice_write(pipe, out, ppos, len, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_splice_from);
|
||||
|
||||
/*
|
||||
* Attempt to initiate a splice from a file to a pipe.
|
||||
@@ -787,6 +788,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
|
||||
return warn_unsupported(in, "read");
|
||||
return in->f_op->splice_read(in, ppos, pipe, len, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_splice_to);
|
||||
|
||||
/**
|
||||
* splice_direct_to_actor - splices data directly between two non-pipes
|
||||
diff --git a/fs/sync.c b/fs/sync.c
|
||||
index b7b5a0a0df6ff..fa5c7fba7f1ba 100644
|
||||
--- a/fs/sync.c
|
||||
+++ b/fs/sync.c
|
||||
@@ -39,6 +39,7 @@ int __sync_filesystem(struct super_block *sb, int wait)
|
||||
sb->s_op->sync_fs(sb, wait);
|
||||
return __sync_blockdev(sb->s_bdev, wait);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(__sync_filesystem);
|
||||
|
||||
/*
|
||||
* Write out and wait upon all dirty data associated with this
|
||||
diff --git a/fs/xattr.c b/fs/xattr.c
|
||||
index cd7a563e8bcd4..7d989d57b0f0d 100644
|
||||
--- a/fs/xattr.c
|
||||
+++ b/fs/xattr.c
|
||||
@@ -360,6 +360,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
|
||||
*xattr_value = value;
|
||||
return error;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(vfs_getxattr_alloc);
|
||||
|
||||
ssize_t
|
||||
__vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
|
||||
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
|
||||
index 7f006a47790cf..be002c3a30833 100644
|
||||
--- a/kernel/locking/lockdep.c
|
||||
+++ b/kernel/locking/lockdep.c
|
||||
@@ -209,6 +209,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
|
||||
*/
|
||||
return lock_classes + class_idx;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(lockdep_hlock_class);
|
||||
#define hlock_class(hlock) lockdep_hlock_class(hlock)
|
||||
|
||||
#ifdef CONFIG_LOCK_STAT
|
||||
diff --git a/kernel/task_work.c b/kernel/task_work.c
|
||||
index 8d6e1217c451c..0e73637adda86 100644
|
||||
--- a/kernel/task_work.c
|
||||
+++ b/kernel/task_work.c
|
||||
@@ -154,3 +154,4 @@ void task_work_run(void)
|
||||
} while (work);
|
||||
}
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(task_work_run);
|
||||
diff --git a/security/security.c b/security/security.c
|
||||
index a28045dc9e7f6..310cf38efeec7 100644
|
||||
--- a/security/security.c
|
||||
+++ b/security/security.c
|
||||
@@ -1093,6 +1093,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
|
||||
return 0;
|
||||
return call_int_hook(path_rmdir, 0, dir, dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_rmdir);
|
||||
|
||||
int security_path_unlink(const struct path *dir, struct dentry *dentry)
|
||||
{
|
||||
@@ -1109,6 +1110,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
|
||||
return 0;
|
||||
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_symlink);
|
||||
|
||||
int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
||||
struct dentry *new_dentry)
|
||||
@@ -1117,6 +1119,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
||||
return 0;
|
||||
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_link);
|
||||
|
||||
int security_path_rename(const struct path *old_dir, struct dentry *old_dentry,
|
||||
const struct path *new_dir, struct dentry *new_dentry,
|
||||
@@ -1144,6 +1147,7 @@ int security_path_truncate(const struct path *path)
|
||||
return 0;
|
||||
return call_int_hook(path_truncate, 0, path);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_truncate);
|
||||
|
||||
int security_path_chmod(const struct path *path, umode_t mode)
|
||||
{
|
||||
@@ -1151,6 +1155,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
|
||||
return 0;
|
||||
return call_int_hook(path_chmod, 0, path, mode);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_chmod);
|
||||
|
||||
int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
||||
{
|
||||
@@ -1158,6 +1163,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
||||
return 0;
|
||||
return call_int_hook(path_chown, 0, path, uid, gid);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_chown);
|
||||
|
||||
int security_path_chroot(const struct path *path)
|
||||
{
|
||||
@@ -1258,6 +1264,7 @@ int security_inode_permission(struct inode *inode, int mask)
|
||||
return 0;
|
||||
return call_int_hook(inode_permission, 0, inode, mask);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_inode_permission);
|
||||
|
||||
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
@@ -1450,6 +1457,7 @@ int security_file_permission(struct file *file, int mask)
|
||||
|
||||
return fsnotify_perm(file, mask);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_file_permission);
|
||||
|
||||
int security_file_alloc(struct file *file)
|
||||
{
|
||||
@@ -1,24 +0,0 @@
|
||||
|
||||
Allow aufs to be built as module.
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
--- a/fs/aufs/Kconfig
|
||||
+++ b/fs/aufs/Kconfig
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
config AUFS_FS
|
||||
- bool "Aufs (Advanced multi layered unification filesystem) support"
|
||||
+ tristate "Aufs (Advanced multi layered unification filesystem) support"
|
||||
help
|
||||
Aufs is a stackable unification filesystem such as Unionfs,
|
||||
which unifies several directories and provides a merged single
|
||||
@@ -72,7 +72,7 @@ endchoice
|
||||
|
||||
config AUFS_EXPORT
|
||||
bool "NFS-exportable aufs"
|
||||
- depends on EXPORTFS = y
|
||||
+ depends on EXPORTFS
|
||||
help
|
||||
If you want to export your mounted aufs via NFS, then enable this
|
||||
option. There are several requirements for this configuration.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,260 +0,0 @@
|
||||
|
||||
fs/dcache.c | 2 ++
|
||||
fs/exec.c | 1 +
|
||||
fs/fcntl.c | 1 +
|
||||
fs/file_table.c | 2 ++
|
||||
fs/namespace.c | 3 +++
|
||||
fs/notify/group.c | 1 +
|
||||
fs/open.c | 1 +
|
||||
fs/read_write.c | 2 ++
|
||||
fs/splice.c | 2 ++
|
||||
fs/xattr.c | 1 +
|
||||
kernel/locking/lockdep.c | 1 +
|
||||
kernel/task_work.c | 1 +
|
||||
security/security.c | 8 ++++++++
|
||||
13 files changed, 26 insertions(+)
|
||||
|
||||
diff -Nurp linux-5.15.37-aufs/fs/dcache.c linux-5.15.37-aufs-mod/fs/dcache.c
|
||||
--- linux-5.15.37-aufs/fs/dcache.c 2022-04-08 20:22:30.617616719 +0300
|
||||
+++ linux-5.15.37-aufs-mod/fs/dcache.c 2022-04-08 20:24:23.624148779 +0300
|
||||
@@ -1450,6 +1450,7 @@ rename_retry:
|
||||
seq = 1;
|
||||
goto again;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(d_walk);
|
||||
|
||||
struct check_mount {
|
||||
struct vfsmount *mnt;
|
||||
@@ -2995,6 +2996,7 @@ void d_exchange(struct dentry *dentry1,
|
||||
|
||||
write_sequnlock(&rename_lock);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(d_exchange);
|
||||
|
||||
/**
|
||||
* d_ancestor - search for an ancestor
|
||||
diff -Nurp linux-5.15.37-aufs/fs/exec.c linux-5.15.37-aufs-mod/fs/exec.c
|
||||
--- linux-5.15.37-aufs/fs/exec.c 2022-04-08 20:07:30.690498863 +0300
|
||||
+++ linux-5.15.37-aufs-mod/fs/exec.c 2022-04-08 20:24:23.624148779 +0300
|
||||
@@ -112,6 +112,7 @@ bool path_noexec(const struct path *path
|
||||
return (path->mnt->mnt_flags & MNT_NOEXEC) ||
|
||||
(path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(path_noexec);
|
||||
|
||||
#ifdef CONFIG_USELIB
|
||||
/*
|
||||
diff -Nurp linux-5.15.37-aufs/fs/fcntl.c linux-5.15.37-aufs-mod/fs/fcntl.c
|
||||
--- linux-5.15.37-aufs/fs/fcntl.c 2022-04-08 20:22:30.617616719 +0300
|
||||
+++ linux-5.15.37-aufs-mod/fs/fcntl.c 2022-04-08 20:24:23.624148779 +0300
|
||||
@@ -86,6 +86,7 @@ int setfl(int fd, struct file *filp, uns
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(setfl);
|
||||
|
||||
static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
|
||||
int force)
|
||||
diff -Nurp linux-5.15.37-aufs/fs/file_table.c linux-5.15.37-aufs-mod/fs/file_table.c
|
||||
--- linux-5.15.37-aufs/fs/file_table.c 2022-03-20 22:14:17.000000000 +0200
|
||||
+++ linux-5.15.37-aufs-mod/fs/file_table.c 2022-04-08 20:24:23.624148779 +0300
|
||||
@@ -198,6 +198,7 @@ over:
|
||||
}
|
||||
return ERR_PTR(-ENFILE);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(alloc_empty_file);
|
||||
|
||||
/*
|
||||
* Variant of alloc_empty_file() that doesn't check and modify nr_files.
|
||||
@@ -412,6 +413,7 @@ void __fput_sync(struct file *file)
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(fput);
|
||||
+EXPORT_SYMBOL_GPL(__fput_sync);
|
||||
|
||||
void __init files_init(void)
|
||||
{
|
||||
diff -Nurp linux-5.15.37-aufs/fs/namespace.c linux-5.15.37-aufs-mod/fs/namespace.c
|
||||
--- linux-5.15.37-aufs/fs/namespace.c 2022-04-08 20:22:30.617616719 +0300
|
||||
+++ linux-5.15.37-aufs-mod/fs/namespace.c 2022-04-08 20:24:23.624148779 +0300
|
||||
@@ -440,6 +440,7 @@ void __mnt_drop_write(struct vfsmount *m
|
||||
mnt_dec_writers(real_mount(mnt));
|
||||
preempt_enable();
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(__mnt_drop_write);
|
||||
|
||||
/**
|
||||
* mnt_drop_write - give up write access to a mount
|
||||
@@ -844,6 +845,7 @@ int is_current_mnt_ns(struct vfsmount *m
|
||||
{
|
||||
return check_mnt(real_mount(mnt));
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(is_current_mnt_ns);
|
||||
|
||||
/*
|
||||
* vfsmount lock must be held for write
|
||||
@@ -2047,6 +2049,7 @@ int iterate_mounts(int (*f)(struct vfsmo
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(iterate_mounts);
|
||||
|
||||
static void lock_mnt_tree(struct mount *mnt)
|
||||
{
|
||||
diff -Nurp linux-5.15.37-aufs/fs/notify/group.c linux-5.15.37-aufs-mod/fs/notify/group.c
|
||||
--- linux-5.15.37-aufs/fs/notify/group.c 2022-03-20 22:14:17.000000000 +0200
|
||||
+++ linux-5.15.37-aufs-mod/fs/notify/group.c 2022-04-08 20:24:23.624148779 +0300
|
||||
@@ -100,6 +100,7 @@ void fsnotify_get_group(struct fsnotify_
|
||||
{
|
||||
refcount_inc(&group->refcnt);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_get_group);
|
||||
|
||||
/*
|
||||
* Drop a reference to a group. Free it if it's through.
|
||||
diff -Nurp linux-5.15.37-aufs/fs/open.c linux-5.15.37-aufs-mod/fs/open.c
|
||||
--- linux-5.15.37-aufs/fs/open.c 2022-03-20 22:14:17.000000000 +0200
|
||||
+++ linux-5.15.37-aufs-mod/fs/open.c 2022-04-08 20:24:23.625148828 +0300
|
||||
@@ -66,6 +66,7 @@ int do_truncate(struct user_namespace *m
|
||||
inode_unlock(dentry->d_inode);
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_truncate);
|
||||
|
||||
long vfs_truncate(const struct path *path, loff_t length)
|
||||
{
|
||||
diff -Nurp linux-5.15.37-aufs/fs/read_write.c linux-5.15.37-aufs-mod/fs/read_write.c
|
||||
--- linux-5.15.37-aufs/fs/read_write.c 2022-03-20 22:14:17.000000000 +0200
|
||||
+++ linux-5.15.37-aufs-mod/fs/read_write.c 2022-04-08 20:24:23.625148828 +0300
|
||||
@@ -488,6 +488,7 @@ ssize_t vfs_read(struct file *file, char
|
||||
inc_syscr(current);
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(vfs_read);
|
||||
|
||||
static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos)
|
||||
{
|
||||
@@ -598,6 +599,7 @@ ssize_t vfs_write(struct file *file, con
|
||||
file_end_write(file);
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(vfs_write);
|
||||
|
||||
/* file_ppos returns &file->f_pos or NULL if file is stream */
|
||||
static inline loff_t *file_ppos(struct file *file)
|
||||
diff -Nurp linux-5.15.37-aufs/fs/splice.c linux-5.15.37-aufs-mod/fs/splice.c
|
||||
--- linux-5.15.37-aufs/fs/splice.c 2022-04-08 20:22:30.617616719 +0300
|
||||
+++ linux-5.15.37-aufs-mod/fs/splice.c 2022-04-08 20:24:23.625148828 +0300
|
||||
@@ -766,6 +766,7 @@ long do_splice_from(struct pipe_inode_in
|
||||
return warn_unsupported(out, "write");
|
||||
return out->f_op->splice_write(pipe, out, ppos, len, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_splice_from);
|
||||
|
||||
/*
|
||||
* Attempt to initiate a splice from a file to a pipe.
|
||||
@@ -795,6 +796,7 @@ long do_splice_to(struct file *in, loff_
|
||||
return warn_unsupported(in, "read");
|
||||
return in->f_op->splice_read(in, ppos, pipe, len, flags);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(do_splice_to);
|
||||
|
||||
/**
|
||||
* splice_direct_to_actor - splices data directly between two non-pipes
|
||||
diff -Nurp linux-5.15.37-aufs/fs/xattr.c linux-5.15.37-aufs-mod/fs/xattr.c
|
||||
--- linux-5.15.37-aufs/fs/xattr.c 2022-03-20 22:14:17.000000000 +0200
|
||||
+++ linux-5.15.37-aufs-mod/fs/xattr.c 2022-04-08 20:24:23.625148828 +0300
|
||||
@@ -384,6 +384,7 @@ vfs_getxattr_alloc(struct user_namespace
|
||||
*xattr_value = value;
|
||||
return error;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(vfs_getxattr_alloc);
|
||||
|
||||
ssize_t
|
||||
__vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
|
||||
diff -Nurp linux-5.15.37-aufs/kernel/locking/lockdep.c linux-5.15.37-aufs-mod/kernel/locking/lockdep.c
|
||||
--- linux-5.15.37-aufs/kernel/locking/lockdep.c 2022-04-08 20:22:30.619616817 +0300
|
||||
+++ linux-5.15.37-aufs-mod/kernel/locking/lockdep.c 2022-04-08 20:24:23.625148828 +0300
|
||||
@@ -208,6 +208,7 @@ inline struct lock_class *lockdep_hlock_
|
||||
*/
|
||||
return lock_classes + class_idx;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(lockdep_hlock_class);
|
||||
#define hlock_class(hlock) lockdep_hlock_class(hlock)
|
||||
|
||||
#ifdef CONFIG_LOCK_STAT
|
||||
diff -Nurp linux-5.15.37-aufs/kernel/task_work.c linux-5.15.37-aufs-mod/kernel/task_work.c
|
||||
--- linux-5.15.37-aufs/kernel/task_work.c 2022-03-20 22:14:17.000000000 +0200
|
||||
+++ linux-5.15.37-aufs-mod/kernel/task_work.c 2022-04-08 20:24:23.625148828 +0300
|
||||
@@ -167,3 +167,4 @@ void task_work_run(void)
|
||||
} while (work);
|
||||
}
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(task_work_run);
|
||||
diff -Nurp linux-5.15.37-aufs/security/security.c linux-5.15.37-aufs-mod/security/security.c
|
||||
--- linux-5.15.37-aufs/security/security.c 2022-04-08 20:07:30.718500239 +0300
|
||||
+++ linux-5.15.37-aufs-mod/security/security.c 2022-04-08 20:24:23.626148877 +0300
|
||||
@@ -1164,6 +1164,7 @@ int security_path_rmdir(const struct pat
|
||||
return 0;
|
||||
return call_int_hook(path_rmdir, 0, dir, dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_rmdir);
|
||||
|
||||
int security_path_unlink(const struct path *dir, struct dentry *dentry)
|
||||
{
|
||||
@@ -1180,6 +1181,7 @@ int security_path_symlink(const struct p
|
||||
return 0;
|
||||
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_symlink);
|
||||
|
||||
int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
||||
struct dentry *new_dentry)
|
||||
@@ -1188,6 +1190,7 @@ int security_path_link(struct dentry *ol
|
||||
return 0;
|
||||
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_link);
|
||||
|
||||
int security_path_rename(const struct path *old_dir, struct dentry *old_dentry,
|
||||
const struct path *new_dir, struct dentry *new_dentry,
|
||||
@@ -1215,6 +1218,7 @@ int security_path_truncate(const struct
|
||||
return 0;
|
||||
return call_int_hook(path_truncate, 0, path);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_truncate);
|
||||
|
||||
int security_path_chmod(const struct path *path, umode_t mode)
|
||||
{
|
||||
@@ -1222,6 +1226,7 @@ int security_path_chmod(const struct pat
|
||||
return 0;
|
||||
return call_int_hook(path_chmod, 0, path, mode);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_chmod);
|
||||
|
||||
int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
||||
{
|
||||
@@ -1229,6 +1234,7 @@ int security_path_chown(const struct pat
|
||||
return 0;
|
||||
return call_int_hook(path_chown, 0, path, uid, gid);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_path_chown);
|
||||
|
||||
int security_path_chroot(const struct path *path)
|
||||
{
|
||||
@@ -1329,6 +1335,7 @@ int security_inode_permission(struct ino
|
||||
return 0;
|
||||
return call_int_hook(inode_permission, 0, inode, mask);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_inode_permission);
|
||||
|
||||
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
@@ -1526,6 +1533,7 @@ int security_file_permission(struct file
|
||||
|
||||
return fsnotify_perm(file, mask);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(security_file_permission);
|
||||
|
||||
int security_file_alloc(struct file *file)
|
||||
{
|
||||
@@ -1,24 +0,0 @@
|
||||
|
||||
Allow aufs to be built as module.
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
--- a/fs/aufs/Kconfig
|
||||
+++ b/fs/aufs/Kconfig
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
config AUFS_FS
|
||||
- bool "Aufs (Advanced multi layered unification filesystem) support"
|
||||
+ tristate "Aufs (Advanced multi layered unification filesystem) support"
|
||||
help
|
||||
Aufs is a stackable unification filesystem such as Unionfs,
|
||||
which unifies several directories and provides a merged single
|
||||
@@ -72,7 +72,7 @@ endchoice
|
||||
|
||||
config AUFS_EXPORT
|
||||
bool "NFS-exportable aufs"
|
||||
- depends on EXPORTFS = y
|
||||
+ depends on EXPORTFS
|
||||
help
|
||||
If you want to export your mounted aufs via NFS, then enable this
|
||||
option. There are several requirements for this configuration.
|
||||
File diff suppressed because it is too large
Load Diff
-36
@@ -1,36 +0,0 @@
|
||||
From 435664ed44c4a17e6715d007061e2b155d3535c8 Mon Sep 17 00:00:00 2001
|
||||
From: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri, 1 Oct 2021 13:38:15 +1000
|
||||
Subject: procfs: do not list TID 0 in /proc/<pid>/task
|
||||
|
||||
If a task exits concurrently, task_pid_nr_ns may return 0.
|
||||
|
||||
Link: https://lkml.kernel.org/r/8735pn5dx7.fsf@oldenburg.str.redhat.com
|
||||
Signed-off-by: Florian Weimer <fweimer@redhat.com>
|
||||
Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
|
||||
Cc: Kees Cook <keescook@chromium.org>
|
||||
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
|
||||
Cc: Alexey Dobriyan <adobriyan@gmail.com>
|
||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
|
||||
---
|
||||
fs/proc/base.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/fs/proc/base.c b/fs/proc/base.c
|
||||
index 533d5836eb9a4..54f29399088f0 100644
|
||||
--- a/fs/proc/base.c
|
||||
+++ b/fs/proc/base.c
|
||||
@@ -3800,6 +3800,9 @@ static int proc_task_readdir(struct file *file, struct dir_context *ctx)
|
||||
char name[10 + 1];
|
||||
unsigned int len;
|
||||
tid = task_pid_nr_ns(task, ns);
|
||||
+ if (!tid)
|
||||
+ /* The task has just exited. */
|
||||
+ continue;
|
||||
len = snprintf(name, sizeof(name), "%u", tid);
|
||||
if (!proc_fill_cache(file, ctx, name, len,
|
||||
proc_task_instantiate, task, NULL)) {
|
||||
--
|
||||
cgit 1.2.3-1.el7
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
tools/tracing/rtla/Makefile | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
--- linux-6.1/tools/tracing/rtla/Makefile.orig
|
||||
+++ linux-6.1/tools/tracing/rtla/Makefile
|
||||
@@ -124,11 +124,6 @@ install: doc_install
|
||||
|
||||
.PHONY: clean tarball
|
||||
clean: doc_clean
|
||||
- @test ! -f rtla || rm rtla
|
||||
- @test ! -f rtla-static || rm rtla-static
|
||||
- @test ! -f src/rtla.o || rm src/rtla.o
|
||||
- @test ! -f $(TARBALL) || rm -f $(TARBALL)
|
||||
- @rm -rf *~ $(OBJ) *.tar.$(CEXT)
|
||||
|
||||
tarball: clean
|
||||
rm -rf $(NAME)-$(VERSION) && mkdir $(NAME)-$(VERSION)
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
From: Takashi Iwai <tiwai-l3A5Bk7waGM@public.gmane.org>
|
||||
Subject: [PATCH] iwlwifi: cfg: Add missing MODULE_FIRMWARE() for *.pnvm
|
||||
Date: Wed, 5 Apr 2023 08:35:46 +0200
|
||||
|
||||
A few models require *.pnvm files while we don't declare them via
|
||||
MODULE_FIRMWARE(). This resulted in the breakage of WiFi on the
|
||||
system that relies on the information from modinfo (e.g. openSUSE
|
||||
installer image).
|
||||
|
||||
This patch adds those missing MODULE_FIRMWARE() entries for *.pnvm
|
||||
files.
|
||||
|
||||
Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1207553
|
||||
Signed-off-by: Takashi Iwai <tiwai-l3A5Bk7waGM@public.gmane.org>
|
||||
---
|
||||
|
||||
The fix is obviously ad hoc.
|
||||
|
||||
Here I added the lines with the explicit string since *_PRE definition
|
||||
contains the tailing dash and can't be used for *.pnvm file.
|
||||
|
||||
Alternatively, we may put a single line
|
||||
MODULE_FIRMWARE("iwlwifi-*.pnvm");
|
||||
to catch all, too.
|
||||
|
||||
drivers/net/wireless/intel/iwlwifi/cfg/22000.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c
|
||||
index 3bdd6774716d..3c6dc3601784 100644
|
||||
--- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c
|
||||
+++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c
|
||||
@@ -426,3 +426,7 @@
|
||||
MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
MODULE_FIRMWARE(IWL_QUZ_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
MODULE_FIRMWARE(IWL_CC_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
+
|
||||
+MODULE_FIRMWARE("iwlwifi-so-a0-gf4-a0.pnvm");
|
||||
+MODULE_FIRMWARE("iwlwifi-so-a0-gf-a0.pnvm");
|
||||
+MODULE_FIRMWARE("iwlwifi-ty-a0-gf-a0.pnvm");
|
||||
@@ -0,0 +1,29 @@
|
||||
From 19d7df98472851e1d2d11e00c177988d0f49683d Mon Sep 17 00:00:00 2001
|
||||
From: Xin Gao <gaoxin@cdjrlc.com>
|
||||
Date: Mon, 17 Oct 2022 15:18:59 -0700
|
||||
Subject: [PATCH 4/6] lib: zstd: Fix comment typo
|
||||
|
||||
The double `when' is duplicated in line 999, remove one.
|
||||
|
||||
Signed-off-by: Xin Gao <gaoxin@cdjrlc.com>
|
||||
Signed-off-by: Nick Terrell <terrelln@fb.com>
|
||||
---
|
||||
lib/zstd/decompress/zstd_decompress.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/zstd/decompress/zstd_decompress.c b/lib/zstd/decompress/zstd_decompress.c
|
||||
index b4d81d84479a..6928e85f9d19 100644
|
||||
--- a/lib/zstd/decompress/zstd_decompress.c
|
||||
+++ b/lib/zstd/decompress/zstd_decompress.c
|
||||
@@ -996,7 +996,7 @@ size_t ZSTD_decompress(void* dst, size_t dstCapacity, const void* src, size_t sr
|
||||
size_t ZSTD_nextSrcSizeToDecompress(ZSTD_DCtx* dctx) { return dctx->expected; }
|
||||
|
||||
/*
|
||||
- * Similar to ZSTD_nextSrcSizeToDecompress(), but when when a block input can be streamed,
|
||||
+ * Similar to ZSTD_nextSrcSizeToDecompress(), but when a block input can be streamed,
|
||||
* we allow taking a partial block as the input. Currently only raw uncompressed blocks can
|
||||
* be streamed.
|
||||
*
|
||||
--
|
||||
2.30.6
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
From 88a309465b3f05a100c3b81966982c0f9f5d23a6 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Rix <trix@redhat.com>
|
||||
Date: Thu, 20 Jan 2022 05:20:06 -0800
|
||||
Subject: [PATCH 1/6] lib: zstd: clean up double word in comment.
|
||||
|
||||
Remove the second 'a' and 'into'.
|
||||
|
||||
Signed-off-by: Tom Rix <trix@redhat.com>
|
||||
Signed-off-by: Nick Terrell <terrelln@fb.com>
|
||||
---
|
||||
include/linux/zstd_lib.h | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/linux/zstd_lib.h b/include/linux/zstd_lib.h
|
||||
index b8c7dbf98390..6b91758b61af 100644
|
||||
--- a/include/linux/zstd_lib.h
|
||||
+++ b/include/linux/zstd_lib.h
|
||||
@@ -1330,7 +1330,7 @@ ZSTDLIB_API size_t ZSTD_generateSequences(ZSTD_CCtx* zc, ZSTD_Sequence* outSeqs,
|
||||
|
||||
/*! ZSTD_mergeBlockDelimiters() :
|
||||
* Given an array of ZSTD_Sequence, remove all sequences that represent block delimiters/last literals
|
||||
- * by merging them into into the literals of the next sequence.
|
||||
+ * by merging them into the literals of the next sequence.
|
||||
*
|
||||
* As such, the final generated result has no explicit representation of block boundaries,
|
||||
* and the final last literals segment is not represented in the sequences.
|
||||
@@ -1377,7 +1377,7 @@ ZSTDLIB_API size_t ZSTD_compressSequences(ZSTD_CCtx* const cctx, void* dst, size
|
||||
/*! ZSTD_writeSkippableFrame() :
|
||||
* Generates a zstd skippable frame containing data given by src, and writes it to dst buffer.
|
||||
*
|
||||
- * Skippable frames begin with a a 4-byte magic number. There are 16 possible choices of magic number,
|
||||
+ * Skippable frames begin with a 4-byte magic number. There are 16 possible choices of magic number,
|
||||
* ranging from ZSTD_MAGIC_SKIPPABLE_START to ZSTD_MAGIC_SKIPPABLE_START+15.
|
||||
* As such, the parameter magicVariant controls the exact skippable frame magic number variant used, so
|
||||
* the magic number used will be ZSTD_MAGIC_SKIPPABLE_START + magicVariant.
|
||||
--
|
||||
2.30.6
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From 7486f5c6e7b197400678f1bb603ac9e4027fb830 Mon Sep 17 00:00:00 2001
|
||||
From: Jilin Yuan <yuanjilin@cdjrlc.com>
|
||||
Date: Fri, 2 Sep 2022 09:32:12 +0800
|
||||
Subject: [PATCH 3/6] lib: zstd: fix repeated words in comments
|
||||
|
||||
Delete the redundant word 'the'.
|
||||
|
||||
Signed-off-by: Jilin Yuan <yuanjilin@cdjrlc.com>
|
||||
Signed-off-by: Nick Terrell <terrelln@fb.com>
|
||||
---
|
||||
lib/zstd/compress/zstd_compress.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/zstd/compress/zstd_compress.c b/lib/zstd/compress/zstd_compress.c
|
||||
index a4e916008b3a..73fff4c60149 100644
|
||||
--- a/lib/zstd/compress/zstd_compress.c
|
||||
+++ b/lib/zstd/compress/zstd_compress.c
|
||||
@@ -4441,7 +4441,7 @@ static size_t ZSTD_validateSequence(U32 offCode, U32 matchLength,
|
||||
size_t posInSrc, U32 windowLog, size_t dictSize, U32 minMatch) {
|
||||
size_t offsetBound;
|
||||
U32 windowSize = 1 << windowLog;
|
||||
- /* posInSrc represents the amount of data the the decoder would decode up to this point.
|
||||
+ /* posInSrc represents the amount of data the decoder would decode up to this point.
|
||||
* As long as the amount of data decoded is less than or equal to window size, offsets may be
|
||||
* larger than the total length of output decoded in order to reference the dict, even larger than
|
||||
* window size. After output surpasses windowSize, we're limited to windowSize offsets again.
|
||||
--
|
||||
2.30.6
|
||||
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
From 09fcdbd28404b7e02cc9fc4862ae5b43b76867c0 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Mon, 22 May 2023 22:24:24 +0200
|
||||
Subject: [PATCH] mmc: sdio: Add/rename SDIO ID of the RTL8723DS SDIO wifi
|
||||
cards
|
||||
|
||||
RTL8723DS comes in two variant and each of them has their own SDIO ID:
|
||||
- 0xd723 can connect two antennas. The WiFi part is still 1x1 so the
|
||||
second antenna can be dedicated to Bluetooth
|
||||
- 0xd724 can only connect one antenna so it's shared between WiFi and
|
||||
Bluetooth
|
||||
|
||||
Add a new entry for the single antenna RTL8723DS (0xd724) which can be
|
||||
found on the MangoPi MQ-Quad. Also rename the existing RTL8723DS entry
|
||||
(0xd723) so it's name reflects that it's the variant with support for
|
||||
two antennas.
|
||||
|
||||
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20230522202425.1827005-4-martin.blumenstingl@googlemail.com
|
||||
---
|
||||
include/linux/mmc/sdio_ids.h | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
|
||||
index c653accdc7fd..7fada7a714fe 100644
|
||||
--- a/include/linux/mmc/sdio_ids.h
|
||||
+++ b/include/linux/mmc/sdio_ids.h
|
||||
@@ -121,7 +121,8 @@
|
||||
#define SDIO_DEVICE_ID_REALTEK_RTW8822BS 0xb822
|
||||
#define SDIO_DEVICE_ID_REALTEK_RTW8821CS 0xc821
|
||||
#define SDIO_DEVICE_ID_REALTEK_RTW8822CS 0xc822
|
||||
-#define SDIO_DEVICE_ID_REALTEK_RTW8723DS 0xd723
|
||||
+#define SDIO_DEVICE_ID_REALTEK_RTW8723DS_2ANT 0xd723
|
||||
+#define SDIO_DEVICE_ID_REALTEK_RTW8723DS_1ANT 0xd724
|
||||
#define SDIO_DEVICE_ID_REALTEK_RTW8821DS 0xd821
|
||||
|
||||
#define SDIO_VENDOR_ID_SIANO 0x039a
|
||||
--
|
||||
2.41.0
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
From: Alex Hung <alex.hung-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
|
||||
Subject: [PATCH] iwlwifi: add new pci id for 6235
|
||||
Date: Mon, 22 Mar 2021 01:11:21 -0600
|
||||
|
||||
lspci output:
|
||||
Network controller [0280]: Intel Corporation Centrino Advanced-N6235
|
||||
[8086:088f] (rev 24)
|
||||
Subsystem: Intel Corporation Centrino Advanced-N 6235 [8086:526a]
|
||||
|
||||
Cc: stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
|
||||
Signed-off-by: Alex Hung <alex.hung-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
|
||||
---
|
||||
drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||
index ffaf973..f85fe36 100644
|
||||
--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||
@@ -200,6 +200,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
|
||||
{IWL_PCI_DEVICE(0x088E, 0x446A, iwl6035_2agn_sff_cfg)},
|
||||
{IWL_PCI_DEVICE(0x088E, 0x4860, iwl6035_2agn_cfg)},
|
||||
{IWL_PCI_DEVICE(0x088F, 0x5260, iwl6035_2agn_cfg)},
|
||||
+ {IWL_PCI_DEVICE(0x088F, 0x526A, iwl6035_2agn_cfg)},
|
||||
|
||||
/* 105 Series */
|
||||
{IWL_PCI_DEVICE(0x0894, 0x0022, iwl105_bgn_cfg)},
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,14 @@
|
||||
|
||||
Replace 3rdparty 8723de driver by the new rtw88 driver.
|
||||
|
||||
Add a module alias to keep upgrade path.
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8723de.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8723de.c
|
||||
@@ -28,3 +28,4 @@ module_pci_driver(rtw_8723de_driver);
|
||||
MODULE_AUTHOR("Realtek Corporation");
|
||||
MODULE_DESCRIPTION("Realtek 802.11n wireless 8723de driver");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
+MODULE_ALIAS("8723de");
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
The staging driver rtlwifi/r8822be.ko.xz is being replaced by the new rtw88 driver.
|
||||
|
||||
Add a module alias to keep upgrade path.
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8822be.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822be.c
|
||||
@@ -28,3 +28,4 @@ module_pci_driver(rtw_8822be_driver);
|
||||
MODULE_AUTHOR("Realtek Corporation");
|
||||
MODULE_DESCRIPTION("Realtek 802.11ac wireless 8822be driver");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
+MODULE_ALIAS("r8822be");
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,9 +6,9 @@
|
||||
drivers/platform/x86/shuttle-wmi.c | 1297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
5 files changed, 1393 insertions(+)
|
||||
|
||||
diff -Nurp linux-5.15.1/Documentation/ABI/testing/sysfs-platform-shuttle-wmi linux-5.15.1-shuttle/Documentation/ABI/testing/sysfs-platform-shuttle-wmi
|
||||
--- linux-5.15.1/Documentation/ABI/testing/sysfs-platform-shuttle-wmi 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ linux-5.15.1-shuttle/Documentation/ABI/testing/sysfs-platform-shuttle-wmi 2021-11-08 23:24:45.468092228 +0200
|
||||
diff -up linux-6.11/Documentation/ABI/testing/sysfs-platform-shuttle-wmi.wmi linux-6.11/Documentation/ABI/testing/sysfs-platform-shuttle-wmi
|
||||
--- linux-6.11/Documentation/ABI/testing/sysfs-platform-shuttle-wmi.wmi 2024-11-18 10:43:15.072608505 +0100
|
||||
+++ linux-6.11/Documentation/ABI/testing/sysfs-platform-shuttle-wmi 2024-11-18 10:43:15.072608505 +0100
|
||||
@@ -0,0 +1,72 @@
|
||||
+What: /sys/devices/platform/shuttle_wmi/lcd_auto_adjust
|
||||
+Date: December 2010
|
||||
@@ -82,10 +82,10 @@ diff -Nurp linux-5.15.1/Documentation/ABI/testing/sysfs-platform-shuttle-wmi lin
|
||||
+ shuttle wmi documentation. It also starts an auto adjust and
|
||||
+ color adjust cycle. The function should only work in shuttle
|
||||
+ machines with LCD attached to an analog VGA connector.
|
||||
diff -Nurp linux-5.15.1/drivers/platform/x86/Kconfig linux-5.15.1-shuttle/drivers/platform/x86/Kconfig
|
||||
--- linux-5.15.1/drivers/platform/x86/Kconfig 2021-10-31 22:53:10.000000000 +0200
|
||||
+++ linux-5.15.1-shuttle/drivers/platform/x86/Kconfig 2021-11-08 23:24:45.469092275 +0200
|
||||
@@ -879,6 +879,21 @@ config PANASONIC_LAPTOP
|
||||
diff -up linux-6.11/drivers/platform/x86/Kconfig.wmi linux-6.11/drivers/platform/x86/Kconfig
|
||||
--- linux-6.11/drivers/platform/x86/Kconfig.wmi 2024-11-18 00:42:21.841340904 +0100
|
||||
+++ linux-6.11/drivers/platform/x86/Kconfig 2024-11-18 10:43:15.072608505 +0100
|
||||
@@ -947,6 +947,21 @@ config PANASONIC_LAPTOP
|
||||
If you have a Panasonic Let's note laptop (such as the R1(N variant),
|
||||
R2, R3, R5, T2, W2 and Y2 series), say Y.
|
||||
|
||||
@@ -107,10 +107,10 @@ diff -Nurp linux-5.15.1/drivers/platform/x86/Kconfig linux-5.15.1-shuttle/driver
|
||||
config SONY_LAPTOP
|
||||
tristate "Sony Laptop Extras"
|
||||
depends on ACPI
|
||||
diff -Nurp linux-5.15.1/drivers/platform/x86/Makefile linux-5.15.1-shuttle/drivers/platform/x86/Makefile
|
||||
--- linux-5.15.1/drivers/platform/x86/Makefile 2021-10-31 22:53:10.000000000 +0200
|
||||
+++ linux-5.15.1-shuttle/drivers/platform/x86/Makefile 2021-11-08 23:24:45.469092275 +0200
|
||||
@@ -84,6 +84,9 @@ obj-$(CONFIG_PCENGINES_APU2) += pcengine
|
||||
diff -up linux-6.11/drivers/platform/x86/Makefile.wmi linux-6.11/drivers/platform/x86/Makefile
|
||||
--- linux-6.11/drivers/platform/x86/Makefile.wmi 2024-09-15 16:57:56.000000000 +0200
|
||||
+++ linux-6.11/drivers/platform/x86/Makefile 2024-11-18 10:43:15.072608505 +0100
|
||||
@@ -98,6 +98,9 @@ obj-$(CONFIG_BARCO_P50_GPIO) += barco-p5
|
||||
obj-$(CONFIG_SAMSUNG_LAPTOP) += samsung-laptop.o
|
||||
obj-$(CONFIG_SAMSUNG_Q10) += samsung-q10.o
|
||||
|
||||
@@ -120,9 +120,9 @@ diff -Nurp linux-5.15.1/drivers/platform/x86/Makefile linux-5.15.1-shuttle/drive
|
||||
# Toshiba
|
||||
obj-$(CONFIG_TOSHIBA_BT_RFKILL) += toshiba_bluetooth.o
|
||||
obj-$(CONFIG_TOSHIBA_HAPS) += toshiba_haps.o
|
||||
diff -Nurp linux-5.15.1/drivers/platform/x86/shuttle-wmi.c linux-5.15.1-shuttle/drivers/platform/x86/shuttle-wmi.c
|
||||
--- linux-5.15.1/drivers/platform/x86/shuttle-wmi.c 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ linux-5.15.1-shuttle/drivers/platform/x86/shuttle-wmi.c 2021-11-08 23:24:45.468092228 +0200
|
||||
diff -up linux-6.11/drivers/platform/x86/shuttle-wmi.c.wmi linux-6.11/drivers/platform/x86/shuttle-wmi.c
|
||||
--- linux-6.11/drivers/platform/x86/shuttle-wmi.c.wmi 2024-11-18 10:43:15.072608505 +0100
|
||||
+++ linux-6.11/drivers/platform/x86/shuttle-wmi.c 2024-11-18 10:43:15.072608505 +0100
|
||||
@@ -0,0 +1,1297 @@
|
||||
+/*
|
||||
+ * ACPI-WMI driver for Shuttle WMI interface
|
||||
@@ -1421,19 +1421,19 @@ diff -Nurp linux-5.15.1/drivers/platform/x86/shuttle-wmi.c linux-5.15.1-shuttle/
|
||||
+
|
||||
+module_init(shuttle_wmi_init);
|
||||
+module_exit(shuttle_wmi_exit);
|
||||
diff -Nurp linux-5.15.1/MAINTAINERS linux-5.15.1-shuttle/MAINTAINERS
|
||||
--- linux-5.15.1/MAINTAINERS 2021-10-31 22:53:10.000000000 +0200
|
||||
+++ linux-5.15.1-shuttle/MAINTAINERS 2021-11-08 23:24:45.469092275 +0200
|
||||
@@ -16993,6 +16993,12 @@ S: Orphan
|
||||
F: drivers/media/platform/sh_vou.c
|
||||
diff -up linux-6.11/MAINTAINERS.wmi linux-6.11/MAINTAINERS
|
||||
--- linux-6.11/MAINTAINERS.wmi 2024-11-18 00:42:21.251332731 +0100
|
||||
+++ linux-6.11/MAINTAINERS 2024-11-18 10:43:15.076608549 +0100
|
||||
@@ -20958,6 +20958,12 @@ S: Orphan
|
||||
F: drivers/media/platform/renesas/sh_vou.c
|
||||
F: include/media/drv-intf/sh_vou.h
|
||||
|
||||
+SHUTTLE WMI EXTRAS DRIVER
|
||||
+M: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
|
||||
+L: platform-driver-x86@vger.kernel.org
|
||||
+S: Maintained
|
||||
+F: drivers/platform/x86/shuttle-wmi.c
|
||||
+M: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
|
||||
+L: platform-driver-x86@vger.kernel.org
|
||||
+S: Maintained
|
||||
+F: drivers/platform/x86/shuttle-wmi.c
|
||||
+
|
||||
SI2157 MEDIA DRIVER
|
||||
M: Antti Palosaari <crope@iki.fi>
|
||||
L: linux-media@vger.kernel.org
|
||||
S: Orphan
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,33 @@
|
||||
|
||||
Hook up to module buildsystem.
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
---
|
||||
drivers/staging/Kconfig | 2 ++
|
||||
drivers/staging/Makefile | 1 +
|
||||
2 files changed, 3 insertions(+)
|
||||
|
||||
diff -Nurp linux-6.3/drivers/staging/Kconfig linux-6.3.rtl/drivers/staging/Kconfig
|
||||
--- linux-6.3/drivers/staging/Kconfig 2023-04-23 22:02:52.000000000 +0300
|
||||
+++ linux-6.3.rtl/drivers/staging/Kconfig 2023-04-24 20:35:51.404482116 +0300
|
||||
@@ -36,6 +36,8 @@ source "drivers/staging/rtl8723bs/Kconfi
|
||||
|
||||
source "drivers/staging/rtl8712/Kconfig"
|
||||
|
||||
+source "drivers/staging/rtl8812au/Kconfig"
|
||||
+
|
||||
source "drivers/staging/rts5208/Kconfig"
|
||||
|
||||
source "drivers/staging/octeon/Kconfig"
|
||||
diff -Nurp linux-6.3/drivers/staging/Makefile linux-6.3.rtl/drivers/staging/Makefile
|
||||
--- linux-6.3/drivers/staging/Makefile 2023-04-23 22:02:52.000000000 +0300
|
||||
+++ linux-6.3.rtl/drivers/staging/Makefile 2023-04-24 20:36:34.117485089 +0300
|
||||
@@ -8,6 +8,7 @@ obj-$(CONFIG_RTL8192U) += rtl8192u/
|
||||
obj-$(CONFIG_RTL8192E) += rtl8192e/
|
||||
obj-$(CONFIG_RTL8723BS) += rtl8723bs/
|
||||
obj-$(CONFIG_R8712U) += rtl8712/
|
||||
+obj-$(CONFIG_RTL8812AU) += rtl8812au/
|
||||
obj-$(CONFIG_RTS5208) += rts5208/
|
||||
obj-$(CONFIG_OCTEON_ETHERNET) += octeon/
|
||||
obj-$(CONFIG_VT6655) += vt6655/
|
||||
@@ -0,0 +1,78 @@
|
||||
|
||||
Adjust driver bits so it keeps the name of the replaced driver
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
---
|
||||
drivers/staging/rtl8812au/Kconfig | 7 +++----
|
||||
drivers/staging/rtl8812au/Makefile | 8 ++++----
|
||||
drivers/staging/rtl8812au/hal/hal_com.c | 2 +-
|
||||
drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c | 2 +-
|
||||
4 files changed, 9 insertions(+), 10 deletions(-)
|
||||
|
||||
diff -Nurp linux-6.3.4-rtl8812au/drivers/staging/rtl8812au/hal/hal_com.c linux-6.3.4-rtl8812au-rename/drivers/staging/rtl8812au/hal/hal_com.c
|
||||
--- linux-6.3.4-rtl8812au/drivers/staging/rtl8812au/hal/hal_com.c 2023-05-26 22:35:36.543136899 +0300
|
||||
+++ linux-6.3.4-rtl8812au-rename/drivers/staging/rtl8812au/hal/hal_com.c 2023-05-26 22:45:07.045079148 +0300
|
||||
@@ -12719,7 +12719,7 @@ bypass_hw_pg:
|
||||
_rtw_memset(hal_data->EEPROMMACAddr, 0, ETH_ALEN);
|
||||
ret = _FAIL;
|
||||
exit:
|
||||
- dev_info(&udev->dev, "88XXau %pM hw_info[%02x]", hw_addr, addr_offset);
|
||||
+ dev_info(&udev->dev, "8812au %pM hw_info[%02x]", hw_addr, addr_offset);
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff -Nurp linux-6.3.4-rtl8812au/drivers/staging/rtl8812au/Kconfig linux-6.3.4-rtl8812au-rename/drivers/staging/rtl8812au/Kconfig
|
||||
--- linux-6.3.4-rtl8812au/drivers/staging/rtl8812au/Kconfig 2022-01-28 22:59:35.486648197 +0200
|
||||
+++ linux-6.3.4-rtl8812au-rename/drivers/staging/rtl8812au/Kconfig 2023-05-26 22:45:07.045079148 +0300
|
||||
@@ -1,6 +1,5 @@
|
||||
-config 88XXAU
|
||||
- tristate "Realtek 88XXau USB WiFi"
|
||||
+config RTL8812AU
|
||||
+ tristate "Realtek 8812au USB WiFi"
|
||||
depends on USB
|
||||
help
|
||||
- Help message of 88XXau
|
||||
-
|
||||
+ Help message of 8812au
|
||||
diff -Nurp linux-6.3.4-rtl8812au/drivers/staging/rtl8812au/Makefile linux-6.3.4-rtl8812au-rename/drivers/staging/rtl8812au/Makefile
|
||||
--- linux-6.3.4-rtl8812au/drivers/staging/rtl8812au/Makefile 2023-05-26 22:35:36.539136900 +0300
|
||||
+++ linux-6.3.4-rtl8812au-rename/drivers/staging/rtl8812au/Makefile 2023-05-26 22:45:07.045079148 +0300
|
||||
@@ -185,9 +185,9 @@ endif
|
||||
|
||||
ifeq ($(CONFIG_RTL8812A)_$(CONFIG_RTL8821A)_$(CONFIG_RTL8814A), y_y_y)
|
||||
|
||||
-EXTRA_CFLAGS += -DDRV_NAME=\"rtl88XXau\"
|
||||
+EXTRA_CFLAGS += -DDRV_NAME=\"rtl8812au\"
|
||||
ifeq ($(CONFIG_USB_HCI), y)
|
||||
-USER_MODULE_NAME = 88XXau
|
||||
+USER_MODULE_NAME = 8812au
|
||||
endif
|
||||
else
|
||||
EXTRA_CFLAGS += -DDRV_NAME=\"rtl8812au\"
|
||||
@@ -1712,11 +1712,11 @@ $(MODULE_NAME)-y += $(_PLATFORM_FILES)
|
||||
|
||||
$(MODULE_NAME)-$(CONFIG_MP_INCLUDED) += core/rtw_mp.o
|
||||
|
||||
-obj-$(CONFIG_88XXAU) := $(MODULE_NAME).o
|
||||
+obj-$(CONFIG_RTL8812AU) := $(MODULE_NAME).o
|
||||
|
||||
else
|
||||
|
||||
-export CONFIG_88XXAU = m
|
||||
+export CONFIG_RTL8812AU = m
|
||||
|
||||
all: modules
|
||||
|
||||
diff -Nurp linux-6.3.4-rtl8812au/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c linux-6.3.4-rtl8812au-rename/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c
|
||||
--- linux-6.3.4-rtl8812au/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c 2023-05-26 22:35:36.547136899 +0300
|
||||
+++ linux-6.3.4-rtl8812au-rename/drivers/staging/rtl8812au/os_dep/linux/ioctl_cfg80211.c 2023-05-26 22:45:07.046079148 +0300
|
||||
@@ -2682,7 +2682,7 @@ void rtw_cfg80211_unlink_bss(_adapter *p
|
||||
#endif
|
||||
|
||||
if (!wiphy) {
|
||||
- pr_info("88XXAU: rtw_cfg80211_unlink_bss: wiphy is NULL\n");
|
||||
+ pr_info("8812AU: rtw_cfg80211_unlink_bss: wiphy is NULL\n");
|
||||
return;
|
||||
}
|
||||
|
||||
+3708
-20245
File diff suppressed because it is too large
Load Diff
+34
@@ -0,0 +1,34 @@
|
||||
From: Arend van Spriel <arend.vanspriel-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
|
||||
Subject: [PATCH V2] wifi: brcmfmac: fix regression for Broadcom PCIe wifi devices
|
||||
Date: Wed, 11 Jan 2023 12:24:19 +0100
|
||||
|
||||
A sanity check was introduced considering maximum flowrings above
|
||||
256 as insane and effectively aborting the device probe. This
|
||||
resulted in regression for number of users as the value turns out
|
||||
to be sane after all.
|
||||
|
||||
Fixes: 2aca4f3734bd ("brcmfmac: return error when getting invalid max_flowrings from dongle")
|
||||
Reported-by: chainofflowers <chainofflowers-VwIFZPTo/vqsTnJN9+BGXg@public.gmane.org>
|
||||
Link: https://lore.kernel.org/all/4781984.GXAFRqVoOG@luna/
|
||||
Reported-by: Christian Marillat <marillat-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>
|
||||
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216894
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
index ae57a9a3ab05..b67f6d0810b6 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
@@ -1228,7 +1228,7 @@ static int brcmf_pcie_init_ringbuffers(struct brcmf_pciedev_info *devinfo)
|
||||
BRCMF_NROF_H2D_COMMON_MSGRINGS;
|
||||
max_completionrings = BRCMF_NROF_D2H_COMMON_MSGRINGS;
|
||||
}
|
||||
- if (max_flowrings > 256) {
|
||||
+ if (max_flowrings > 512) {
|
||||
brcmf_err(bus, "invalid max_flowrings(%d)\n", max_flowrings);
|
||||
return -EIO;
|
||||
}
|
||||
--
|
||||
2.32.0
|
||||
@@ -0,0 +1,46 @@
|
||||
From 5b16c1aaae72edd3f895da027a532ee6a740df7b Mon Sep 17 00:00:00 2001
|
||||
From: Sasha Levin <sashal@kernel.org>
|
||||
Date: Tue, 13 Dec 2022 23:15:04 +0200
|
||||
Subject: wifi: iwlwifi: fw: skip PPAG for JF
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
[ Upstream commit 1c4c0b28b517d778d37900deedfe91088839f07a ]
|
||||
|
||||
For JF RFs we don't support PPAG, but many firmware
|
||||
images lie about it. Always skip support for JF to
|
||||
avoid firmware errors when sending the command.
|
||||
|
||||
Reported-and-tested-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
Link: https://lore.kernel.org/linux-wireless/CACT4oufQsqHGp6bah2c4+jPn2wG1oZqY=UKa_TmPx=F6Lxng8Q@mail.gmail.com
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20221213225723.2a43415d8990.I9ac210740a45b41f1b2e15274e1daf4284f2808a@changeid
|
||||
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||
---
|
||||
drivers/net/wireless/intel/iwlwifi/fw/acpi.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/acpi.c b/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
|
||||
index e6d64152c81a..a02e5a67b706 100644
|
||||
--- a/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
|
||||
+++ b/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
|
||||
@@ -1106,6 +1106,11 @@ int iwl_read_ppag_table(struct iwl_fw_runtime *fwrt, union iwl_ppag_table_cmd *c
|
||||
int i, j, num_sub_bands;
|
||||
s8 *gain;
|
||||
|
||||
+ /* many firmware images for JF lie about this */
|
||||
+ if (CSR_HW_RFID_TYPE(fwrt->trans->hw_rf_id) ==
|
||||
+ CSR_HW_RFID_TYPE(CSR_HW_RF_ID_TYPE_JF))
|
||||
+ return -EOPNOTSUPP;
|
||||
+
|
||||
if (!fw_has_capa(&fwrt->fw->ucode_capa, IWL_UCODE_TLV_CAPA_SET_PPAG)) {
|
||||
IWL_DEBUG_RADIO(fwrt,
|
||||
"PPAG capability not supported by FW, command not sent.\n");
|
||||
--
|
||||
2.35.1
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
From: Aiden Leong <aiden.leong-PRyJKUU44DAAvxtiuMwx3w@public.gmane.org>
|
||||
Subject: [PATCH v2] wifi: iwlwifi: pcie: add support for AX101NGW
|
||||
Date: Fri, 6 Jan 2023 13:05:48 +0800
|
||||
|
||||
Fix a bug introduced by:
|
||||
commit 32ed101aa140 ("iwlwifi: convert all Qu with Jf devices to the new
|
||||
config table"), so now we pick the FIRST matching config.
|
||||
|
||||
Signed-off-by: Aiden Leong <aiden.leong-PRyJKUU44DAAvxtiuMwx3w@public.gmane.org>
|
||||
---
|
||||
|
||||
I split patchset v1 to two standalone patches, since there are not that
|
||||
strongly related to each other.
|
||||
|
||||
---
|
||||
drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||
index a46df1320372..5d74adbd49cf 100644
|
||||
--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||
@@ -1461,7 +1461,7 @@ iwl_pci_find_dev_info(u16 device, u16 subsystem_device,
|
||||
if (!num_devices)
|
||||
return NULL;
|
||||
|
||||
- for (i = num_devices - 1; i >= 0; i--) {
|
||||
+ for (i = 0; i < num_devices; i++) {
|
||||
const struct iwl_dev_info *dev_info = &iwl_dev_info_table[i];
|
||||
|
||||
if (dev_info->device != (u16)IWL_CFG_ANY &&
|
||||
--
|
||||
2.39.0
|
||||
+451
@@ -0,0 +1,451 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
To: linux-wireless@vger.kernel.org
|
||||
Cc: johannes@sipsolutions.net
|
||||
Subject: [PATCH v4] wifi: mac80211: fix initialization of rx->link and rx->link_sta
|
||||
Date: Sat, 17 Dec 2022 09:56:24 +0100
|
||||
|
||||
There are some codepaths that do not initialize rx->link_sta properly. This
|
||||
causes a crash in places which assume that rx->link_sta is valid if rx->sta
|
||||
is valid.
|
||||
One known instance is triggered by __ieee80211_rx_h_amsdu being called from
|
||||
fast-rx. It results in a crash like this one:
|
||||
|
||||
BUG: kernel NULL pointer dereference, address: 00000000000000a8
|
||||
#PF: supervisor write access in kernel mode
|
||||
#PF: error_code(0x0002) - not-present page PGD 0 P4D 0
|
||||
Oops: 0002 [#1] PREEMPT SMP PTI
|
||||
CPU: 1 PID: 506 Comm: mt76-usb-rx phy Tainted: G E 6.1.0-debian64x+1.7 #3
|
||||
Hardware name: ZOTAC ZBOX-ID92/ZBOX-IQ01/ZBOX-ID92/ZBOX-IQ01, BIOS B220P007 05/21/2014
|
||||
RIP: 0010:ieee80211_deliver_skb+0x62/0x1f0 [mac80211]
|
||||
Code: 00 48 89 04 24 e8 9e a7 c3 df 89 c0 48 03 1c c5 a0 ea 39 a1 4c 01 6b 08 48 ff 03 48
|
||||
83 7d 28 00 74 11 48 8b 45 30 48 63 55 44 <48> 83 84 d0 a8 00 00 00 01 41 8b 86 c0
|
||||
11 00 00 8d 50 fd 83 fa 01
|
||||
RSP: 0018:ffff999040803b10 EFLAGS: 00010286
|
||||
RAX: 0000000000000000 RBX: ffffb9903f496480 RCX: 0000000000000000
|
||||
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
|
||||
RBP: ffff999040803ce0 R08: 0000000000000000 R09: 0000000000000000
|
||||
R10: 0000000000000000 R11: 0000000000000000 R12: ffff8d21828ac900
|
||||
R13: 000000000000004a R14: ffff8d2198ed89c0 R15: ffff8d2198ed8000
|
||||
FS: 0000000000000000(0000) GS:ffff8d24afe80000(0000) knlGS:0000000000000000
|
||||
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
|
||||
CR2: 00000000000000a8 CR3: 0000000429810002 CR4: 00000000001706e0
|
||||
Call Trace:
|
||||
<TASK>
|
||||
__ieee80211_rx_h_amsdu+0x1b5/0x240 [mac80211]
|
||||
? ieee80211_prepare_and_rx_handle+0xcdd/0x1320 [mac80211]
|
||||
? __local_bh_enable_ip+0x3b/0xa0
|
||||
ieee80211_prepare_and_rx_handle+0xcdd/0x1320 [mac80211]
|
||||
? prepare_transfer+0x109/0x1a0 [xhci_hcd]
|
||||
ieee80211_rx_list+0xa80/0xda0 [mac80211]
|
||||
mt76_rx_complete+0x207/0x2e0 [mt76]
|
||||
mt76_rx_poll_complete+0x357/0x5a0 [mt76]
|
||||
mt76u_rx_worker+0x4f5/0x600 [mt76_usb]
|
||||
? mt76_get_min_avg_rssi+0x140/0x140 [mt76]
|
||||
__mt76_worker_fn+0x50/0x80 [mt76]
|
||||
kthread+0xed/0x120
|
||||
? kthread_complete_and_exit+0x20/0x20
|
||||
ret_from_fork+0x22/0x30
|
||||
|
||||
Since the initialization of rx->link and rx->link_sta is rather convoluted
|
||||
and duplicated in many places, clean it up by using a helper function to
|
||||
set it.
|
||||
|
||||
Fixes: ccdde7c74ffd ("wifi: mac80211: properly implement MLO key handling")
|
||||
Fixes: b320d6c456ff ("wifi: mac80211: use correct rx link_sta instead of default")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
v4: fix regression in handling mgmt frames with AP_VLAN
|
||||
v3: include crash log
|
||||
v2: fix uninitialized variable
|
||||
|
||||
net/mac80211/rx.c | 218 ++++++++++++++++++++--------------------------
|
||||
1 file changed, 95 insertions(+), 123 deletions(-)
|
||||
|
||||
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
|
||||
index 3fa7b36d4324..09cd0caded16 100644
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -4091,6 +4091,56 @@ static void ieee80211_invoke_rx_handlers(struct ieee80211_rx_data *rx)
|
||||
#undef CALL_RXH
|
||||
}
|
||||
|
||||
+static bool
|
||||
+ieee80211_rx_is_valid_sta_link_id(struct ieee80211_sta *sta, u8 link_id)
|
||||
+{
|
||||
+ if (!sta->mlo)
|
||||
+ return false;
|
||||
+
|
||||
+ return !!(sta->valid_links & BIT(link_id));
|
||||
+}
|
||||
+
|
||||
+static bool ieee80211_rx_data_set_link(struct ieee80211_rx_data *rx,
|
||||
+ u8 link_id)
|
||||
+{
|
||||
+ if (!ieee80211_rx_is_valid_sta_link_id(&rx->sta->sta, link_id))
|
||||
+ return false;
|
||||
+
|
||||
+ rx->link_id = link_id;
|
||||
+ rx->link = rcu_dereference(rx->sdata->link[link_id]);
|
||||
+ rx->link_sta = rcu_dereference(rx->sta->link[link_id]);
|
||||
+
|
||||
+ return rx->link && rx->link_sta;
|
||||
+}
|
||||
+
|
||||
+static bool ieee80211_rx_data_set_sta(struct ieee80211_rx_data *rx,
|
||||
+ struct ieee80211_sta *pubsta,
|
||||
+ int link_id)
|
||||
+{
|
||||
+ struct sta_info *sta;
|
||||
+
|
||||
+ sta = container_of(pubsta, struct sta_info, sta);
|
||||
+
|
||||
+ rx->link_id = link_id;
|
||||
+ rx->sta = sta;
|
||||
+
|
||||
+ if (sta) {
|
||||
+ rx->local = sta->sdata->local;
|
||||
+ if (!rx->sdata)
|
||||
+ rx->sdata = sta->sdata;
|
||||
+ rx->link_sta = &sta->deflink;
|
||||
+
|
||||
+ if (link_id >= 0 &&
|
||||
+ !ieee80211_rx_data_set_link(rx, link_id))
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ if (link_id < 0)
|
||||
+ rx->link = &rx->sdata->deflink;
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* This function makes calls into the RX path, therefore
|
||||
* it has to be invoked under RCU read lock.
|
||||
@@ -4099,16 +4149,19 @@ void ieee80211_release_reorder_timeout(struct sta_info *sta, int tid)
|
||||
{
|
||||
struct sk_buff_head frames;
|
||||
struct ieee80211_rx_data rx = {
|
||||
- .sta = sta,
|
||||
- .sdata = sta->sdata,
|
||||
- .local = sta->local,
|
||||
/* This is OK -- must be QoS data frame */
|
||||
.security_idx = tid,
|
||||
.seqno_idx = tid,
|
||||
- .link_id = -1,
|
||||
};
|
||||
struct tid_ampdu_rx *tid_agg_rx;
|
||||
- u8 link_id;
|
||||
+ int link_id = -1;
|
||||
+
|
||||
+ /* FIXME: statistics won't be right with this */
|
||||
+ if (sta->sta.valid_links)
|
||||
+ link_id = ffs(sta->sta.valid_links) - 1;
|
||||
+
|
||||
+ if (!ieee80211_rx_data_set_sta(&rx, &sta->sta, link_id))
|
||||
+ return;
|
||||
|
||||
tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]);
|
||||
if (!tid_agg_rx)
|
||||
@@ -4128,10 +4181,6 @@ void ieee80211_release_reorder_timeout(struct sta_info *sta, int tid)
|
||||
};
|
||||
drv_event_callback(rx.local, rx.sdata, &event);
|
||||
}
|
||||
- /* FIXME: statistics won't be right with this */
|
||||
- link_id = sta->sta.valid_links ? ffs(sta->sta.valid_links) - 1 : 0;
|
||||
- rx.link = rcu_dereference(sta->sdata->link[link_id]);
|
||||
- rx.link_sta = rcu_dereference(sta->link[link_id]);
|
||||
|
||||
ieee80211_rx_handlers(&rx, &frames);
|
||||
}
|
||||
@@ -4147,7 +4196,6 @@ void ieee80211_mark_rx_ba_filtered_frames(struct ieee80211_sta *pubsta, u8 tid,
|
||||
/* This is OK -- must be QoS data frame */
|
||||
.security_idx = tid,
|
||||
.seqno_idx = tid,
|
||||
- .link_id = -1,
|
||||
};
|
||||
int i, diff;
|
||||
|
||||
@@ -4158,10 +4206,8 @@ void ieee80211_mark_rx_ba_filtered_frames(struct ieee80211_sta *pubsta, u8 tid,
|
||||
|
||||
sta = container_of(pubsta, struct sta_info, sta);
|
||||
|
||||
- rx.sta = sta;
|
||||
- rx.sdata = sta->sdata;
|
||||
- rx.link = &rx.sdata->deflink;
|
||||
- rx.local = sta->local;
|
||||
+ if (!ieee80211_rx_data_set_sta(&rx, pubsta, -1))
|
||||
+ return;
|
||||
|
||||
rcu_read_lock();
|
||||
tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]);
|
||||
@@ -4548,15 +4594,6 @@ void ieee80211_check_fast_rx_iface(struct ieee80211_sub_if_data *sdata)
|
||||
mutex_unlock(&local->sta_mtx);
|
||||
}
|
||||
|
||||
-static bool
|
||||
-ieee80211_rx_is_valid_sta_link_id(struct ieee80211_sta *sta, u8 link_id)
|
||||
-{
|
||||
- if (!sta->mlo)
|
||||
- return false;
|
||||
-
|
||||
- return !!(sta->valid_links & BIT(link_id));
|
||||
-}
|
||||
-
|
||||
static void ieee80211_rx_8023(struct ieee80211_rx_data *rx,
|
||||
struct ieee80211_fast_rx *fast_rx,
|
||||
int orig_len)
|
||||
@@ -4667,7 +4704,6 @@ static bool ieee80211_invoke_fast_rx(struct ieee80211_rx_data *rx,
|
||||
struct sk_buff *skb = rx->skb;
|
||||
struct ieee80211_hdr *hdr = (void *)skb->data;
|
||||
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
|
||||
- struct sta_info *sta = rx->sta;
|
||||
int orig_len = skb->len;
|
||||
int hdrlen = ieee80211_hdrlen(hdr->frame_control);
|
||||
int snap_offs = hdrlen;
|
||||
@@ -4679,7 +4715,6 @@ static bool ieee80211_invoke_fast_rx(struct ieee80211_rx_data *rx,
|
||||
u8 da[ETH_ALEN];
|
||||
u8 sa[ETH_ALEN];
|
||||
} addrs __aligned(2);
|
||||
- struct link_sta_info *link_sta;
|
||||
struct ieee80211_sta_rx_stats *stats;
|
||||
|
||||
/* for parallel-rx, we need to have DUP_VALIDATED, otherwise we write
|
||||
@@ -4782,18 +4817,10 @@ static bool ieee80211_invoke_fast_rx(struct ieee80211_rx_data *rx,
|
||||
drop:
|
||||
dev_kfree_skb(skb);
|
||||
|
||||
- if (rx->link_id >= 0) {
|
||||
- link_sta = rcu_dereference(sta->link[rx->link_id]);
|
||||
- if (!link_sta)
|
||||
- return true;
|
||||
- } else {
|
||||
- link_sta = &sta->deflink;
|
||||
- }
|
||||
-
|
||||
if (fast_rx->uses_rss)
|
||||
- stats = this_cpu_ptr(link_sta->pcpu_rx_stats);
|
||||
+ stats = this_cpu_ptr(rx->link_sta->pcpu_rx_stats);
|
||||
else
|
||||
- stats = &link_sta->rx_stats;
|
||||
+ stats = &rx->link_sta->rx_stats;
|
||||
|
||||
stats->dropped++;
|
||||
return true;
|
||||
@@ -4811,8 +4838,8 @@ static bool ieee80211_prepare_and_rx_handle(struct ieee80211_rx_data *rx,
|
||||
struct ieee80211_local *local = rx->local;
|
||||
struct ieee80211_sub_if_data *sdata = rx->sdata;
|
||||
struct ieee80211_hdr *hdr = (void *)skb->data;
|
||||
- struct link_sta_info *link_sta = NULL;
|
||||
- struct ieee80211_link_data *link;
|
||||
+ struct link_sta_info *link_sta = rx->link_sta;
|
||||
+ struct ieee80211_link_data *link = rx->link;
|
||||
|
||||
rx->skb = skb;
|
||||
|
||||
@@ -4834,35 +4861,6 @@ static bool ieee80211_prepare_and_rx_handle(struct ieee80211_rx_data *rx,
|
||||
if (!ieee80211_accept_frame(rx))
|
||||
return false;
|
||||
|
||||
- if (rx->link_id >= 0) {
|
||||
- link = rcu_dereference(rx->sdata->link[rx->link_id]);
|
||||
-
|
||||
- /* we might race link removal */
|
||||
- if (!link)
|
||||
- return true;
|
||||
- rx->link = link;
|
||||
-
|
||||
- if (rx->sta) {
|
||||
- rx->link_sta =
|
||||
- rcu_dereference(rx->sta->link[rx->link_id]);
|
||||
- if (!rx->link_sta)
|
||||
- return true;
|
||||
- }
|
||||
- } else {
|
||||
- if (rx->sta)
|
||||
- rx->link_sta = &rx->sta->deflink;
|
||||
-
|
||||
- rx->link = &sdata->deflink;
|
||||
- }
|
||||
-
|
||||
- if (unlikely(!is_multicast_ether_addr(hdr->addr1) &&
|
||||
- rx->link_id >= 0 && rx->sta && rx->sta->sta.mlo)) {
|
||||
- link_sta = rcu_dereference(rx->sta->link[rx->link_id]);
|
||||
-
|
||||
- if (WARN_ON_ONCE(!link_sta))
|
||||
- return true;
|
||||
- }
|
||||
-
|
||||
if (!consume) {
|
||||
struct skb_shared_hwtstamps *shwt;
|
||||
|
||||
@@ -4882,7 +4880,7 @@ static bool ieee80211_prepare_and_rx_handle(struct ieee80211_rx_data *rx,
|
||||
shwt->hwtstamp = skb_hwtstamps(skb)->hwtstamp;
|
||||
}
|
||||
|
||||
- if (unlikely(link_sta)) {
|
||||
+ if (unlikely(rx->sta && rx->sta->sta.mlo)) {
|
||||
/* translate to MLD addresses */
|
||||
if (ether_addr_equal(link->conf->addr, hdr->addr1))
|
||||
ether_addr_copy(hdr->addr1, rx->sdata->vif.addr);
|
||||
@@ -4912,6 +4910,7 @@ static void __ieee80211_rx_handle_8023(struct ieee80211_hw *hw,
|
||||
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
|
||||
struct ieee80211_fast_rx *fast_rx;
|
||||
struct ieee80211_rx_data rx;
|
||||
+ int link_id = -1;
|
||||
|
||||
memset(&rx, 0, sizeof(rx));
|
||||
rx.skb = skb;
|
||||
@@ -4928,12 +4927,8 @@ static void __ieee80211_rx_handle_8023(struct ieee80211_hw *hw,
|
||||
if (!pubsta)
|
||||
goto drop;
|
||||
|
||||
- rx.sta = container_of(pubsta, struct sta_info, sta);
|
||||
- rx.sdata = rx.sta->sdata;
|
||||
-
|
||||
- if (status->link_valid &&
|
||||
- !ieee80211_rx_is_valid_sta_link_id(pubsta, status->link_id))
|
||||
- goto drop;
|
||||
+ if (status->link_valid)
|
||||
+ link_id = status->link_id;
|
||||
|
||||
/*
|
||||
* TODO: Should the frame be dropped if the right link_id is not
|
||||
@@ -4942,19 +4937,8 @@ static void __ieee80211_rx_handle_8023(struct ieee80211_hw *hw,
|
||||
* link_id is used only for stats purpose and updating the stats on
|
||||
* the deflink is fine?
|
||||
*/
|
||||
- if (status->link_valid)
|
||||
- rx.link_id = status->link_id;
|
||||
-
|
||||
- if (rx.link_id >= 0) {
|
||||
- struct ieee80211_link_data *link;
|
||||
-
|
||||
- link = rcu_dereference(rx.sdata->link[rx.link_id]);
|
||||
- if (!link)
|
||||
- goto drop;
|
||||
- rx.link = link;
|
||||
- } else {
|
||||
- rx.link = &rx.sdata->deflink;
|
||||
- }
|
||||
+ if (!ieee80211_rx_data_set_sta(&rx, pubsta, link_id))
|
||||
+ goto drop;
|
||||
|
||||
fast_rx = rcu_dereference(rx.sta->fast_rx);
|
||||
if (!fast_rx)
|
||||
@@ -4972,6 +4956,8 @@ static bool ieee80211_rx_for_interface(struct ieee80211_rx_data *rx,
|
||||
{
|
||||
struct link_sta_info *link_sta;
|
||||
struct ieee80211_hdr *hdr = (void *)skb->data;
|
||||
+ struct sta_info *sta;
|
||||
+ int link_id = -1;
|
||||
|
||||
/*
|
||||
* Look up link station first, in case there's a
|
||||
@@ -4981,24 +4967,19 @@ static bool ieee80211_rx_for_interface(struct ieee80211_rx_data *rx,
|
||||
*/
|
||||
link_sta = link_sta_info_get_bss(rx->sdata, hdr->addr2);
|
||||
if (link_sta) {
|
||||
- rx->sta = link_sta->sta;
|
||||
- rx->link_id = link_sta->link_id;
|
||||
+ sta = link_sta->sta;
|
||||
+ link_id = link_sta->link_id;
|
||||
} else {
|
||||
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
|
||||
|
||||
- rx->sta = sta_info_get_bss(rx->sdata, hdr->addr2);
|
||||
- if (rx->sta) {
|
||||
- if (status->link_valid &&
|
||||
- !ieee80211_rx_is_valid_sta_link_id(&rx->sta->sta,
|
||||
- status->link_id))
|
||||
- return false;
|
||||
-
|
||||
- rx->link_id = status->link_valid ? status->link_id : -1;
|
||||
- } else {
|
||||
- rx->link_id = -1;
|
||||
- }
|
||||
+ sta = sta_info_get_bss(rx->sdata, hdr->addr2);
|
||||
+ if (status->link_valid)
|
||||
+ link_id = status->link_id;
|
||||
}
|
||||
|
||||
+ if (!ieee80211_rx_data_set_sta(rx, &sta->sta, link_id))
|
||||
+ return false;
|
||||
+
|
||||
return ieee80211_prepare_and_rx_handle(rx, skb, consume);
|
||||
}
|
||||
|
||||
@@ -5057,19 +5038,15 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
|
||||
|
||||
if (ieee80211_is_data(fc)) {
|
||||
struct sta_info *sta, *prev_sta;
|
||||
- u8 link_id = status->link_id;
|
||||
+ int link_id = -1;
|
||||
|
||||
- if (pubsta) {
|
||||
- rx.sta = container_of(pubsta, struct sta_info, sta);
|
||||
- rx.sdata = rx.sta->sdata;
|
||||
+ if (status->link_valid)
|
||||
+ link_id = status->link_id;
|
||||
|
||||
- if (status->link_valid &&
|
||||
- !ieee80211_rx_is_valid_sta_link_id(pubsta, link_id))
|
||||
+ if (pubsta) {
|
||||
+ if (!ieee80211_rx_data_set_sta(&rx, pubsta, link_id))
|
||||
goto out;
|
||||
|
||||
- if (status->link_valid)
|
||||
- rx.link_id = status->link_id;
|
||||
-
|
||||
/*
|
||||
* In MLO connection, fetch the link_id using addr2
|
||||
* when the driver does not pass link_id in status.
|
||||
@@ -5087,7 +5064,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
|
||||
if (!link_sta)
|
||||
goto out;
|
||||
|
||||
- rx.link_id = link_sta->link_id;
|
||||
+ ieee80211_rx_data_set_link(&rx, link_sta->link_id);
|
||||
}
|
||||
|
||||
if (ieee80211_prepare_and_rx_handle(&rx, skb, true))
|
||||
@@ -5103,30 +5080,25 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
|
||||
continue;
|
||||
}
|
||||
|
||||
- if ((status->link_valid &&
|
||||
- !ieee80211_rx_is_valid_sta_link_id(&prev_sta->sta,
|
||||
- link_id)) ||
|
||||
- (!status->link_valid && prev_sta->sta.mlo))
|
||||
+ if (!ieee80211_rx_data_set_sta(&rx, &prev_sta->sta,
|
||||
+ link_id))
|
||||
+ goto out;
|
||||
+
|
||||
+ if (!status->link_valid && prev_sta->sta.mlo)
|
||||
continue;
|
||||
|
||||
- rx.link_id = status->link_valid ? link_id : -1;
|
||||
- rx.sta = prev_sta;
|
||||
- rx.sdata = prev_sta->sdata;
|
||||
ieee80211_prepare_and_rx_handle(&rx, skb, false);
|
||||
|
||||
prev_sta = sta;
|
||||
}
|
||||
|
||||
if (prev_sta) {
|
||||
- if ((status->link_valid &&
|
||||
- !ieee80211_rx_is_valid_sta_link_id(&prev_sta->sta,
|
||||
- link_id)) ||
|
||||
- (!status->link_valid && prev_sta->sta.mlo))
|
||||
+ if (!ieee80211_rx_data_set_sta(&rx, &prev_sta->sta,
|
||||
+ link_id))
|
||||
goto out;
|
||||
|
||||
- rx.link_id = status->link_valid ? link_id : -1;
|
||||
- rx.sta = prev_sta;
|
||||
- rx.sdata = prev_sta->sdata;
|
||||
+ if (!status->link_valid && prev_sta->sta.mlo)
|
||||
+ goto out;
|
||||
|
||||
if (ieee80211_prepare_and_rx_handle(&rx, skb, true))
|
||||
return;
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
From a3b125ceb45e1acd21c9bcb6d3a5c52897d536e6 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Mon, 22 May 2023 22:24:25 +0200
|
||||
Subject: [PATCH] wifi: rtw88: Add support for the SDIO based RTL8723DS chipset
|
||||
|
||||
Wire up RTL8723DS chipset support using the rtw88 SDIO HCI code as well
|
||||
as the existing RTL8723D chipset code.
|
||||
|
||||
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20230522202425.1827005-5-martin.blumenstingl@googlemail.com
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw88/Kconfig | 11 +++++
|
||||
drivers/net/wireless/realtek/rtw88/Makefile | 3 ++
|
||||
.../net/wireless/realtek/rtw88/rtw8723ds.c | 41 +++++++++++++++++++
|
||||
3 files changed, 55 insertions(+)
|
||||
create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8723ds.c
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/Kconfig b/drivers/net/wireless/realtek/rtw88/Kconfig
|
||||
index 29eb2f8e0eb7..cffad1c01249 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/Kconfig
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/Kconfig
|
||||
@@ -111,6 +111,17 @@ config RTW88_8723DE
|
||||
|
||||
802.11n PCIe wireless network adapter
|
||||
|
||||
+config RTW88_8723DS
|
||||
+ tristate "Realtek 8723DS SDIO wireless network adapter"
|
||||
+ depends on MMC
|
||||
+ select RTW88_CORE
|
||||
+ select RTW88_SDIO
|
||||
+ select RTW88_8723D
|
||||
+ help
|
||||
+ Select this option will enable support for 8723DS chipset
|
||||
+
|
||||
+ 802.11n SDIO wireless network adapter
|
||||
+
|
||||
config RTW88_8723DU
|
||||
tristate "Realtek 8723DU USB wireless network adapter"
|
||||
depends on USB
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/Makefile b/drivers/net/wireless/realtek/rtw88/Makefile
|
||||
index 82979b30ae8d..fd212c09d88a 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/Makefile
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/Makefile
|
||||
@@ -50,6 +50,9 @@ rtw88_8723d-objs := rtw8723d.o rtw8723d_table.o
|
||||
obj-$(CONFIG_RTW88_8723DE) += rtw88_8723de.o
|
||||
rtw88_8723de-objs := rtw8723de.o
|
||||
|
||||
+obj-$(CONFIG_RTW88_8723DS) += rtw88_8723ds.o
|
||||
+rtw88_8723ds-objs := rtw8723ds.o
|
||||
+
|
||||
obj-$(CONFIG_RTW88_8723DU) += rtw88_8723du.o
|
||||
rtw88_8723du-objs := rtw8723du.o
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8723ds.c b/drivers/net/wireless/realtek/rtw88/rtw8723ds.c
|
||||
new file mode 100644
|
||||
index 000000000000..e5b6960ba0a0
|
||||
--- /dev/null
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8723ds.c
|
||||
@@ -0,0 +1,41 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
+/* Copyright(c) Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
+ */
|
||||
+
|
||||
+#include <linux/mmc/sdio_func.h>
|
||||
+#include <linux/mmc/sdio_ids.h>
|
||||
+#include <linux/module.h>
|
||||
+#include "main.h"
|
||||
+#include "rtw8723d.h"
|
||||
+#include "sdio.h"
|
||||
+
|
||||
+static const struct sdio_device_id rtw_8723ds_id_table[] = {
|
||||
+ {
|
||||
+ SDIO_DEVICE(SDIO_VENDOR_ID_REALTEK,
|
||||
+ SDIO_DEVICE_ID_REALTEK_RTW8723DS_1ANT),
|
||||
+ .driver_data = (kernel_ulong_t)&rtw8723d_hw_spec,
|
||||
+ },
|
||||
+ {
|
||||
+ SDIO_DEVICE(SDIO_VENDOR_ID_REALTEK,
|
||||
+ SDIO_DEVICE_ID_REALTEK_RTW8723DS_2ANT),
|
||||
+ .driver_data = (kernel_ulong_t)&rtw8723d_hw_spec,
|
||||
+ },
|
||||
+ {}
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(sdio, rtw_8723ds_id_table);
|
||||
+
|
||||
+static struct sdio_driver rtw_8723ds_driver = {
|
||||
+ .name = "rtw_8723ds",
|
||||
+ .probe = rtw_sdio_probe,
|
||||
+ .remove = rtw_sdio_remove,
|
||||
+ .id_table = rtw_8723ds_id_table,
|
||||
+ .drv = {
|
||||
+ .pm = &rtw_sdio_pm_ops,
|
||||
+ .shutdown = rtw_sdio_shutdown,
|
||||
+ }
|
||||
+};
|
||||
+module_sdio_driver(rtw_8723ds_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("Martin Blumenstingl <martin.blumenstingl@googlemail.com>");
|
||||
+MODULE_DESCRIPTION("Realtek 802.11n wireless 8723ds driver");
|
||||
+MODULE_LICENSE("Dual BSD/GPL");
|
||||
--
|
||||
2.41.0
|
||||
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
From 9be20a82232779c59979527dfc8febca3182fee2 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Mon, 22 May 2023 22:24:23 +0200
|
||||
Subject: [PATCH] wifi: rtw88: rtw8723d: Implement RTL8723DS (SDIO) efuse
|
||||
parsing
|
||||
|
||||
The efuse of the SDIO RTL8723DS chip has only one known member: the mac
|
||||
address is at offset 0x11a. Add a struct rtw8723ds_efuse describing this
|
||||
and use it for copying the mac address when the SDIO bus is used.
|
||||
|
||||
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20230522202425.1827005-3-martin.blumenstingl@googlemail.com
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw88/rtw8723d.c | 9 +++++++++
|
||||
drivers/net/wireless/realtek/rtw88/rtw8723d.h | 6 ++++++
|
||||
2 files changed, 15 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8723d.c b/drivers/net/wireless/realtek/rtw88/rtw8723d.c
|
||||
index 06e7454c9ca6..cadf66f4e854 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8723d.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8723d.c
|
||||
@@ -216,6 +216,12 @@ static void rtw8723du_efuse_parsing(struct rtw_efuse *efuse,
|
||||
ether_addr_copy(efuse->addr, map->u.mac_addr);
|
||||
}
|
||||
|
||||
+static void rtw8723ds_efuse_parsing(struct rtw_efuse *efuse,
|
||||
+ struct rtw8723d_efuse *map)
|
||||
+{
|
||||
+ ether_addr_copy(efuse->addr, map->s.mac_addr);
|
||||
+}
|
||||
+
|
||||
static int rtw8723d_read_efuse(struct rtw_dev *rtwdev, u8 *log_map)
|
||||
{
|
||||
struct rtw_efuse *efuse = &rtwdev->efuse;
|
||||
@@ -248,6 +254,9 @@ static int rtw8723d_read_efuse(struct rtw_dev *rtwdev, u8 *log_map)
|
||||
case RTW_HCI_TYPE_USB:
|
||||
rtw8723du_efuse_parsing(efuse, map);
|
||||
break;
|
||||
+ case RTW_HCI_TYPE_SDIO:
|
||||
+ rtw8723ds_efuse_parsing(efuse, map);
|
||||
+ break;
|
||||
default:
|
||||
/* unsupported now */
|
||||
return -ENOTSUPP;
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8723d.h b/drivers/net/wireless/realtek/rtw88/rtw8723d.h
|
||||
index a356318a5c15..3642a2c7f80c 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8723d.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8723d.h
|
||||
@@ -49,6 +49,11 @@ struct rtw8723du_efuse {
|
||||
u8 mac_addr[ETH_ALEN]; /* 0x107 */
|
||||
};
|
||||
|
||||
+struct rtw8723ds_efuse {
|
||||
+ u8 res4[0x4a]; /* 0xd0 */
|
||||
+ u8 mac_addr[ETH_ALEN]; /* 0x11a */
|
||||
+};
|
||||
+
|
||||
struct rtw8723d_efuse {
|
||||
__le16 rtl_id;
|
||||
u8 rsvd[2];
|
||||
@@ -80,6 +85,7 @@ struct rtw8723d_efuse {
|
||||
union {
|
||||
struct rtw8723de_efuse e;
|
||||
struct rtw8723du_efuse u;
|
||||
+ struct rtw8723ds_efuse s;
|
||||
};
|
||||
};
|
||||
|
||||
--
|
||||
2.41.0
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
From: Olaf Dabrunz <od@suse.de>
|
||||
Subject: [apm] default to "power_off" when SMP kernel is used on single processo
|
||||
r machines
|
||||
Reference: SUSE221667
|
||||
|
||||
This patch turns on support for the APM power_off function by default when the
|
||||
SMP kernel is used on single processor machines.
|
||||
|
||||
It is a bit ugly to use a separate variable to make sure the default value is
|
||||
only used when needed and the power_off variable is not initialized twice. But
|
||||
I did not find a better way to do this with the way the current initialization
|
||||
system works.
|
||||
|
||||
Signed-off-by: Olaf Dabrunz <od@suse.de>
|
||||
|
||||
|
||||
arch/x86/kernel/apm_32.c | 15 ++++++++++++++-
|
||||
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/x86/kernel/apm_32.c
|
||||
+++ b/arch/x86/kernel/apm_32.c
|
||||
@@ -388,6 +388,7 @@ static bool smp __read_mostly;
|
||||
static int apm_disabled = -1;
|
||||
#ifdef CONFIG_SMP
|
||||
static bool power_off;
|
||||
+static int power_off_set;
|
||||
#else
|
||||
static bool power_off = 1;
|
||||
#endif
|
||||
@@ -1843,6 +1844,14 @@ static int apm(void *unused)
|
||||
}
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_SMP
|
||||
+ if (!power_off_set) {
|
||||
+ power_off = (num_online_cpus() == 1);
|
||||
+ /* remember not to initialize (with default value) again */
|
||||
+ power_off_set = 1;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
/* Install our power off handler.. */
|
||||
if (power_off)
|
||||
pm_power_off = apm_power_off;
|
||||
@@ -1886,8 +1895,12 @@ static int __init apm_setup(char *str)
|
||||
if (strncmp(str, "debug", 5) == 0)
|
||||
debug = !invert;
|
||||
if ((strncmp(str, "power-off", 9) == 0) ||
|
||||
- (strncmp(str, "power_off", 9) == 0))
|
||||
+ (strncmp(str, "power_off", 9) == 0)) {
|
||||
power_off = !invert;
|
||||
+#ifdef CONFIG_SMP
|
||||
+ power_off_set = 1;
|
||||
+#endif
|
||||
+ }
|
||||
if (strncmp(str, "smp", 3) == 0) {
|
||||
smp = !invert;
|
||||
idle_threshold = 100;
|
||||
@@ -0,0 +1,29 @@
|
||||
|
||||
The Toshiba Equium A6 Laptop needs pci-assign-busses in order to detect
|
||||
the Wireless card Netgear MA521
|
||||
|
||||
More info here: http://qa.mandriva.com/show_bug.cgi?id=18989
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mandriva.org>
|
||||
|
||||
---
|
||||
arch/x86/pci/common.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
--- a/arch/x86/pci/common.c
|
||||
+++ b/arch/x86/pci/common.c
|
||||
@@ -245,6 +245,14 @@ static const struct dmi_system_id __devi
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "SX20S"),
|
||||
},
|
||||
},
|
||||
+ {
|
||||
+ .callback = assign_all_busses,
|
||||
+ .ident = "Toshiba Equium A6 Laptop",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Equium A60"),
|
||||
+ },
|
||||
+ },
|
||||
#endif /* __i386__ */
|
||||
{
|
||||
.callback = set_bf_sort,
|
||||
+163
@@ -0,0 +1,163 @@
|
||||
From 4782c725c1538aa9ef894ae4a3938db40be7f02c Mon Sep 17 00:00:00 2001
|
||||
From: Nick Terrell <terrelln@fb.com>
|
||||
Date: Fri, 14 Oct 2022 14:47:04 -0700
|
||||
Subject: [PATCH 5/6] zstd: Move zstd-common module exports to
|
||||
zstd_common_module.c
|
||||
|
||||
The zstd codebase is imported from the upstream zstd repo, and is over-written on
|
||||
every update. Upstream keeps the kernel specific code separate from the main
|
||||
library. So the module definition is moved into the zstd_common_module.c file.
|
||||
This matches the pattern followed by the zstd-compress and zstd-decompress files.
|
||||
|
||||
I've done build and boot testing on x86-64, i386, and aarch64. I've
|
||||
verified that zstd built both as modules and built-in build and boot.
|
||||
|
||||
Signed-off-by: Nick Terrell <terrelln@fb.com>
|
||||
---
|
||||
lib/zstd/Makefile | 1 +
|
||||
lib/zstd/common/entropy_common.c | 4 ----
|
||||
lib/zstd/common/zstd_common.c | 10 ----------
|
||||
lib/zstd/zstd_common_module.c | 32 ++++++++++++++++++++++++++++++++
|
||||
4 files changed, 33 insertions(+), 14 deletions(-)
|
||||
create mode 100644 lib/zstd/zstd_common_module.c
|
||||
|
||||
diff --git a/lib/zstd/Makefile b/lib/zstd/Makefile
|
||||
index 440bd0007ae2..20f08c644b71 100644
|
||||
--- a/lib/zstd/Makefile
|
||||
+++ b/lib/zstd/Makefile
|
||||
@@ -35,6 +35,7 @@ zstd_decompress-y := \
|
||||
decompress/zstd_decompress_block.o \
|
||||
|
||||
zstd_common-y := \
|
||||
+ zstd_common_module.o \
|
||||
common/debug.o \
|
||||
common/entropy_common.o \
|
||||
common/error_private.o \
|
||||
diff --git a/lib/zstd/common/entropy_common.c b/lib/zstd/common/entropy_common.c
|
||||
index a311808c0d56..6353249de614 100644
|
||||
--- a/lib/zstd/common/entropy_common.c
|
||||
+++ b/lib/zstd/common/entropy_common.c
|
||||
@@ -15,7 +15,6 @@
|
||||
/* *************************************
|
||||
* Dependencies
|
||||
***************************************/
|
||||
-#include <linux/module.h>
|
||||
#include "mem.h"
|
||||
#include "error_private.h" /* ERR_*, ERROR */
|
||||
#define FSE_STATIC_LINKING_ONLY /* FSE_MIN_TABLELOG */
|
||||
@@ -240,7 +239,6 @@ size_t FSE_readNCount(
|
||||
{
|
||||
return FSE_readNCount_bmi2(normalizedCounter, maxSVPtr, tableLogPtr, headerBuffer, hbSize, /* bmi2 */ 0);
|
||||
}
|
||||
-EXPORT_SYMBOL_GPL(FSE_readNCount);
|
||||
|
||||
/*! HUF_readStats() :
|
||||
Read compact Huffman tree, saved by HUF_writeCTable().
|
||||
@@ -256,7 +254,6 @@ size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
||||
U32 wksp[HUF_READ_STATS_WORKSPACE_SIZE_U32];
|
||||
return HUF_readStats_wksp(huffWeight, hwSize, rankStats, nbSymbolsPtr, tableLogPtr, src, srcSize, wksp, sizeof(wksp), /* bmi2 */ 0);
|
||||
}
|
||||
-EXPORT_SYMBOL_GPL(HUF_readStats);
|
||||
|
||||
FORCE_INLINE_TEMPLATE size_t
|
||||
HUF_readStats_body(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
||||
@@ -357,4 +354,3 @@ size_t HUF_readStats_wksp(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
||||
(void)bmi2;
|
||||
return HUF_readStats_body_default(huffWeight, hwSize, rankStats, nbSymbolsPtr, tableLogPtr, src, srcSize, workSpace, wkspSize);
|
||||
}
|
||||
-EXPORT_SYMBOL_GPL(HUF_readStats_wksp);
|
||||
diff --git a/lib/zstd/common/zstd_common.c b/lib/zstd/common/zstd_common.c
|
||||
index 0f1f63be25d9..3d7e35b309b5 100644
|
||||
--- a/lib/zstd/common/zstd_common.c
|
||||
+++ b/lib/zstd/common/zstd_common.c
|
||||
@@ -13,7 +13,6 @@
|
||||
/*-*************************************
|
||||
* Dependencies
|
||||
***************************************/
|
||||
-#include <linux/module.h>
|
||||
#define ZSTD_DEPS_NEED_MALLOC
|
||||
#include "zstd_deps.h" /* ZSTD_malloc, ZSTD_calloc, ZSTD_free, ZSTD_memset */
|
||||
#include "error_private.h"
|
||||
@@ -36,17 +35,14 @@ const char* ZSTD_versionString(void) { return ZSTD_VERSION_STRING; }
|
||||
* tells if a return value is an error code
|
||||
* symbol is required for external callers */
|
||||
unsigned ZSTD_isError(size_t code) { return ERR_isError(code); }
|
||||
-EXPORT_SYMBOL_GPL(ZSTD_isError);
|
||||
|
||||
/*! ZSTD_getErrorName() :
|
||||
* provides error code string from function result (useful for debugging) */
|
||||
const char* ZSTD_getErrorName(size_t code) { return ERR_getErrorName(code); }
|
||||
-EXPORT_SYMBOL_GPL(ZSTD_getErrorName);
|
||||
|
||||
/*! ZSTD_getError() :
|
||||
* convert a `size_t` function result into a proper ZSTD_errorCode enum */
|
||||
ZSTD_ErrorCode ZSTD_getErrorCode(size_t code) { return ERR_getErrorCode(code); }
|
||||
-EXPORT_SYMBOL_GPL(ZSTD_getErrorCode);
|
||||
|
||||
/*! ZSTD_getErrorString() :
|
||||
* provides error code string from enum */
|
||||
@@ -63,7 +59,6 @@ void* ZSTD_customMalloc(size_t size, ZSTD_customMem customMem)
|
||||
return customMem.customAlloc(customMem.opaque, size);
|
||||
return ZSTD_malloc(size);
|
||||
}
|
||||
-EXPORT_SYMBOL_GPL(ZSTD_customMalloc);
|
||||
|
||||
void* ZSTD_customCalloc(size_t size, ZSTD_customMem customMem)
|
||||
{
|
||||
@@ -76,7 +71,6 @@ void* ZSTD_customCalloc(size_t size, ZSTD_customMem customMem)
|
||||
}
|
||||
return ZSTD_calloc(1, size);
|
||||
}
|
||||
-EXPORT_SYMBOL_GPL(ZSTD_customCalloc);
|
||||
|
||||
void ZSTD_customFree(void* ptr, ZSTD_customMem customMem)
|
||||
{
|
||||
@@ -87,7 +81,3 @@ void ZSTD_customFree(void* ptr, ZSTD_customMem customMem)
|
||||
ZSTD_free(ptr);
|
||||
}
|
||||
}
|
||||
-EXPORT_SYMBOL_GPL(ZSTD_customFree);
|
||||
-
|
||||
-MODULE_LICENSE("Dual BSD/GPL");
|
||||
-MODULE_DESCRIPTION("Zstd Common");
|
||||
diff --git a/lib/zstd/zstd_common_module.c b/lib/zstd/zstd_common_module.c
|
||||
new file mode 100644
|
||||
index 000000000000..22686e367e6f
|
||||
--- /dev/null
|
||||
+++ b/lib/zstd/zstd_common_module.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
||||
+/*
|
||||
+ * Copyright (c) Facebook, Inc.
|
||||
+ * All rights reserved.
|
||||
+ *
|
||||
+ * This source code is licensed under both the BSD-style license (found in the
|
||||
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
+ * in the COPYING file in the root directory of this source tree).
|
||||
+ * You may select, at your option, one of the above-listed licenses.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+
|
||||
+#include "common/huf.h"
|
||||
+#include "common/fse.h"
|
||||
+#include "common/zstd_internal.h"
|
||||
+
|
||||
+// Export symbols shared by compress and decompress into a common module
|
||||
+
|
||||
+#undef ZSTD_isError /* defined within zstd_internal.h */
|
||||
+EXPORT_SYMBOL_GPL(FSE_readNCount);
|
||||
+EXPORT_SYMBOL_GPL(HUF_readStats);
|
||||
+EXPORT_SYMBOL_GPL(HUF_readStats_wksp);
|
||||
+EXPORT_SYMBOL_GPL(ZSTD_isError);
|
||||
+EXPORT_SYMBOL_GPL(ZSTD_getErrorName);
|
||||
+EXPORT_SYMBOL_GPL(ZSTD_getErrorCode);
|
||||
+EXPORT_SYMBOL_GPL(ZSTD_customMalloc);
|
||||
+EXPORT_SYMBOL_GPL(ZSTD_customCalloc);
|
||||
+EXPORT_SYMBOL_GPL(ZSTD_customFree);
|
||||
+
|
||||
+MODULE_LICENSE("Dual BSD/GPL");
|
||||
+MODULE_DESCRIPTION("Zstd Common");
|
||||
--
|
||||
2.30.6
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+49
-48
@@ -12,7 +12,7 @@
|
||||
<IsA>app:gui</IsA>
|
||||
<Summary>Performance analyser tool that makes full use of the Linux performance counter subsystem</Summary>
|
||||
<Description>perf is a new tool which is used to optimize, validate and measure applications, workloads or the full system through the Linux performance counter subsystem.</Description>
|
||||
<Archive sha1sum="01961045127c21f8a9dbaa9e7705dbb9e4cffbaa" type="targz">https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.15.tar.gz</Archive>
|
||||
<Archive sha1sum="42188f7e49564f5ed4fcf8591c6f7477a063fc54" type="tarxz">https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.12.tar.xz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>git</Dependency>
|
||||
<Dependency>libunwind-devel</Dependency>
|
||||
@@ -43,66 +43,60 @@
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!-- Linux patches -->
|
||||
<Patch level="1" compressionType="xz">patches/linux/patch-5.15.81.xz</Patch>
|
||||
<Patch level="1" compressionType="xz">patches/linux/patch-6.12.58.xz</Patch>
|
||||
|
||||
<!-- aufs5 patchec -->
|
||||
<Patch level="1">patches/aufs5/aufs5.15.41-20220620.patch</Patch>
|
||||
<Patch level="1">patches/aufs5/aufs5-base.patch</Patch>
|
||||
<Patch level="1">patches/aufs5/aufs5-kbuild.patch</Patch>
|
||||
<Patch level="1">patches/aufs5/aufs5-loopback.patch</Patch>
|
||||
<Patch level="1">patches/aufs5/aufs5-mmap.patch</Patch>
|
||||
<Patch level="1">patches/aufs5/tmpfs-idr.patch</Patch>
|
||||
<Patch level="1">patches/aufs5/vfs-ino.patch</Patch>
|
||||
<Patch level="1">patches/aufs5/aufs5-standalone.patch</Patch>
|
||||
<!-- aufs6 patchec -->
|
||||
<Patch level="1">patches/aufs6/aufs6.12-20250414.patch</Patch>
|
||||
<Patch level="1">patches/aufs6/aufs6-base.patch</Patch>
|
||||
<Patch level="1">patches/aufs6/aufs6-kbuild.patch</Patch>
|
||||
<!-- <Patch level="1">patches/aufs6/aufs6-loopback.patch</Patch> -->
|
||||
<Patch level="1">patches/aufs6/aufs6-mmap.patch</Patch>
|
||||
<!-- <Patch level="1">patches/aufs6/tmpfs-idr.patch</Patch> -->
|
||||
<!-- <Patch level="1">patches/aufs6/vfs-ino.patch</Patch> -->
|
||||
<!-- <Patch level="1">patches/aufs6/aufs6-standalone.patch</Patch> -->
|
||||
|
||||
<!-- Mageia Linux patches-->
|
||||
<Patch level="1">patches/mageia/fs-procfs-do-not-list-TID-0-in-proc-pid-task.patch</Patch>
|
||||
|
||||
<Patch level="1">patches/mageia/CVE-2019-12379.patch</Patch>
|
||||
<Patch level="1">patches/mageia/CVE-2020-16119-DCCP-CCID-structure-use-after-free.patch</Patch>
|
||||
<!-- <Patch level="1">patches/mageia/fs-procfs-do-not-list-TID-0-in-proc-pid-task.patch</Patch> -->
|
||||
|
||||
<!-- <Patch level="1">patches/mageia/CVE-2019-12379.patch</Patch> -->
|
||||
<!-- <Patch level="1">patches/mageia/CVE-2020-16119-DCCP-CCID-structure-use-after-free.patch</Patch> -->
|
||||
<Patch level="1">patches/mageia/platform-x86-add-shuttle-wmi-driver.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-drop-devinit-exit.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-4.2-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-4.13-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-4.2-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-drop-devinit-exit.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-kernel-5.5.patch</Patch>
|
||||
|
||||
<Patch level="1">patches/mageia/3rd-3rdparty-tree.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-3rdparty-merge.patch</Patch>
|
||||
<!-- rtl8812 -->
|
||||
<Patch level="1">patches/mageia/staging-rtl8812au.patch</Patch>
|
||||
<Patch level="1">patches/mageia/staging-rtl8812au-rename.patch</Patch>
|
||||
<Patch level="1">patches/mageia/staging-rtl8812au-Kconfig-Makefile.patch</Patch>
|
||||
<Patch level="1">patches/mageia/staging-rtl8812au-20231117.patch</Patch>
|
||||
|
||||
<Patch level="1">patches/mageia/3rd-ndiswrapper-1.63.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-ndiswrapper-Kconfig.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-ndiswrapper-Makefile-build-fix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-niswrapper-Kconfig-Makefile.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0001-Pull-device-0x0821-from-list-of-device-supported-by-.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0122-Fix-change_beacon-for-kernel-6.7.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0123-Update-os_intfs.c-for-kernel-6.8.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0124-Update-usb_intf.c-for-kernel-6.8.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0128-Update-ioctl_cfg80211.c-support-for-kernel-6.9.patch</Patch>
|
||||
|
||||
<Patch level="1">patches/mageia/3rd-rtl8812au.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8812au-Kconfig-Makefile.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8812au-rename.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8812au-kernel-5.12.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8812au-kernel-5.15.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0001-rtl8812au-add-missed-prototypes.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0005-rtl8812au-add-missed-prototypes.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0006-rtl8812au-add-suggested-braces-around-empty-body-in-.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0007-rtl8812au-add-suggested-braces-around-empty-body-in-.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0008-rtl8812au-add-suggested-braces-around-empty-body-in-.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0009-rtl8812au-add-suggested-braces-around-empty-body-in-.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0010-rtl8812au-add-missed-prototypes.patch</Patch>
|
||||
<Patch level="1">patches/mageia/0002-rtl8812au-fix-warnings.patch</Patch>
|
||||
|
||||
<Patch level="1">patches/mageia/3rd-rtl8723de.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8723de-Kconfig-Makefile.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8723de-fix-redefine.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8723de-nodebug.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8223de-kernel-5.6.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8723de-add-kernel-5.8-support.patch</Patch>
|
||||
<!-- rtw88 -->
|
||||
<Patch level="1">patches/mageia/net-wireless-rtw88-add-8723de-alias.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-wireless-rtw88-add-r8822be-alias.patch</Patch>
|
||||
|
||||
<Patch level="1">patches/mageia/3rd-viahss-0.92.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-viahss-config.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-viahss-module-license.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-viahss-2.6.35-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-viahss-3.0-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-viahss-Kconfig-Makefile.patch</Patch>
|
||||
<!-- iwlfiwi -->
|
||||
<Patch level="1">patches/mageia/net-wireless-iwlwifi-add-new-pci-id-for-6235.patch</Patch>
|
||||
<Patch level="1">patches/mageia/wifi-iwlwifi-pcie-add-support-for-AX101NGW.patch</Patch>
|
||||
<!-- <Patch level="1">patches/mageia/wifi-iwlwifi-fw-skip-ppag-for-jf.patch</Patch> -->
|
||||
|
||||
<Patch level="1">patches/mageia/3rd-rtl8821ce.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8821ce-Kconfig-Makefile.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8821ce-5.8-fix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8821ce-kernel-5.10.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8821ce-kernel-5.12.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8821ce-kernel-5.15.patch</Patch>
|
||||
|
||||
<Patch level="1">patches/mageia/3rd-fix-kconfig.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-pci-toshiba-equium-a60-assign-busses.patch</Patch>
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -136,6 +130,13 @@
|
||||
</Files>
|
||||
</Package>
|
||||
<History>
|
||||
<Update release="30">
|
||||
<Date>2025-11-14</Date>
|
||||
<Version>6.12.58</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Mustafa Cinasal</Name>
|
||||
<Email>muscnsl@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="29">
|
||||
<Date>2022-12-07</Date>
|
||||
<Version>5.15.81</Version>
|
||||
|
||||
Reference in New Issue
Block a user