-From af666a41a5823e30f88387ff0dc85cd3d6d0cbe4 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Cengiz Can <cengiz@kernel.wtf>
Date: Wed, 4 Mar 2020 13:58:19 +0300
Subject: blktrace: fix dereference after null check
Signed-off-by: Cengiz Can <cengiz@kernel.wtf>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- kernel/trace/blktrace.c | 5 ++++-
+ kernel/trace/blktrace.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
-diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
-index bf9bf3f22edb5..6737564680193 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
-@@ -1822,8 +1822,11 @@ static ssize_t sysfs_blk_trace_attr_store(struct device *dev,
+@@ -1822,8 +1822,11 @@ static ssize_t sysfs_blk_trace_attr_stor
}
ret = 0;
if (ret == 0) {
if (attr == &dev_attr_act_mask)
---
-2.20.1
-
-From 8f7d1986c7ee15bdfbb32b33a45da62f94583f01 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Waiman Long <longman@redhat.com>
Date: Wed, 20 Sep 2017 13:12:20 -0600
Subject: blktrace: Fix potential deadlock between delete & sysfs ops
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- block/blk-core.c | 3 +++
- include/linux/blkdev.h | 1 +
- kernel/trace/blktrace.c | 18 ++++++++++++------
+ block/blk-core.c | 3 +++
+ include/linux/blkdev.h | 1 +
+ kernel/trace/blktrace.c | 18 ++++++++++++------
3 files changed, 16 insertions(+), 6 deletions(-)
-diff --git a/block/blk-core.c b/block/blk-core.c
-index 7662f97dded69..dc4119a1e1229 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
-@@ -719,6 +719,9 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
+@@ -719,6 +719,9 @@ struct request_queue *blk_alloc_queue_no
kobject_init(&q->kobj, &blk_queue_ktype);
mutex_init(&q->sysfs_lock);
spin_lock_init(&q->__queue_lock);
-diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index 4ae5d6ecd7275..ab819210e0112 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -432,6 +432,7 @@ struct request_queue {
#endif
/*
* for flush operations
-diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
-index 210b8e726a974..5e6fc28414028 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
-@@ -644,6 +644,12 @@ int blk_trace_startstop(struct request_queue *q, int start)
+@@ -644,6 +644,12 @@ int blk_trace_startstop(struct request_q
}
EXPORT_SYMBOL_GPL(blk_trace_startstop);
/**
* blk_trace_ioctl: - handle the ioctls associated with tracing
* @bdev: the block device
-@@ -661,7 +667,7 @@ int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)
+@@ -661,7 +667,7 @@ int blk_trace_ioctl(struct block_device
if (!q)
return -ENXIO;
switch (cmd) {
case BLKTRACESETUP:
-@@ -687,7 +693,7 @@ int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)
+@@ -687,7 +693,7 @@ int blk_trace_ioctl(struct block_device
break;
}
return ret;
}
-@@ -1652,7 +1658,7 @@ static ssize_t sysfs_blk_trace_attr_show(struct device *dev,
+@@ -1652,7 +1658,7 @@ static ssize_t sysfs_blk_trace_attr_show
if (q == NULL)
goto out_bdput;
if (attr == &dev_attr_enable) {
ret = sprintf(buf, "%u\n", !!q->blk_trace);
-@@ -1671,7 +1677,7 @@ static ssize_t sysfs_blk_trace_attr_show(struct device *dev,
+@@ -1671,7 +1677,7 @@ static ssize_t sysfs_blk_trace_attr_show
ret = sprintf(buf, "%llu\n", q->blk_trace->end_lba);
out_unlock_bdev:
out_bdput:
bdput(bdev);
out:
-@@ -1713,7 +1719,7 @@ static ssize_t sysfs_blk_trace_attr_store(struct device *dev,
+@@ -1713,7 +1719,7 @@ static ssize_t sysfs_blk_trace_attr_stor
if (q == NULL)
goto out_bdput;
if (attr == &dev_attr_enable) {
if (!!value == !!q->blk_trace) {
-@@ -1743,7 +1749,7 @@ static ssize_t sysfs_blk_trace_attr_store(struct device *dev,
+@@ -1743,7 +1749,7 @@ static ssize_t sysfs_blk_trace_attr_stor
}
out_unlock_bdev:
out_bdput:
bdput(bdev);
out:
---
-2.20.1
-
-From 3ce9f765dac1051141b48809f8608d840c655b7e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Jens Axboe <axboe@kernel.dk>
Date: Sun, 19 Nov 2017 11:52:55 -0700
Subject: blktrace: fix trace mutex deadlock
Fixes: 1f2cac107c59 ("blktrace: fix unlocked access to init/start-stop/teardown")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- kernel/trace/blktrace.c | 4 ++--
+ kernel/trace/blktrace.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
-index dc5fd20429d8e..ea18c6997eb23 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
-@@ -572,7 +572,7 @@ static int __blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
+@@ -572,7 +572,7 @@ static int __blk_trace_setup(struct requ
return ret;
if (copy_to_user(arg, &buts, sizeof(buts))) {
return -EFAULT;
}
return 0;
-@@ -618,7 +618,7 @@ static int compat_blk_trace_setup(struct request_queue *q, char *name,
+@@ -618,7 +618,7 @@ static int compat_blk_trace_setup(struct
return ret;
if (copy_to_user(arg, &buts.name, ARRAY_SIZE(buts.name))) {
return -EFAULT;
}
---
-2.20.1
-
-From bf5b9cf66d2ef05afd456e3b524edc72d1ae1452 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Jens Axboe <axboe@kernel.dk>
Date: Sun, 5 Nov 2017 09:13:48 -0700
Subject: blktrace: fix unlocked access to init/start-stop/teardown
Tested-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- kernel/trace/blktrace.c | 58 ++++++++++++++++++++++++++++++++++-------
+ kernel/trace/blktrace.c | 58 +++++++++++++++++++++++++++++++++++++++---------
1 file changed, 48 insertions(+), 10 deletions(-)
-diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
-index 5e6fc28414028..dc5fd20429d8e 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
-@@ -323,7 +323,7 @@ static void blk_trace_cleanup(struct blk_trace *bt)
+@@ -323,7 +323,7 @@ static void blk_trace_cleanup(struct blk
put_probe_ref();
}
{
struct blk_trace *bt;
-@@ -336,6 +336,17 @@ int blk_trace_remove(struct request_queue *q)
+@@ -336,6 +336,17 @@ int blk_trace_remove(struct request_queu
return 0;
}
{
struct blk_user_trace_setup buts;
int ret;
-@@ -567,6 +577,19 @@ int blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
+@@ -567,6 +577,19 @@ int blk_trace_setup(struct request_queue
}
return 0;
}
EXPORT_SYMBOL_GPL(blk_trace_setup);
#if defined(CONFIG_COMPAT) && defined(CONFIG_X86_64)
-@@ -603,7 +626,7 @@ static int compat_blk_trace_setup(struct request_queue *q, char *name,
+@@ -603,7 +626,7 @@ static int compat_blk_trace_setup(struct
}
#endif
{
int ret;
struct blk_trace *bt = q->blk_trace;
-@@ -642,6 +665,17 @@ int blk_trace_startstop(struct request_queue *q, int start)
+@@ -642,6 +665,17 @@ int blk_trace_startstop(struct request_q
return ret;
}
EXPORT_SYMBOL_GPL(blk_trace_startstop);
/*
-@@ -672,7 +706,7 @@ int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)
+@@ -672,7 +706,7 @@ int blk_trace_ioctl(struct block_device
switch (cmd) {
case BLKTRACESETUP:
bdevname(bdev, b);
break;
#if defined(CONFIG_COMPAT) && defined(CONFIG_X86_64)
case BLKTRACESETUP32:
-@@ -683,10 +717,10 @@ int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)
+@@ -683,10 +717,10 @@ int blk_trace_ioctl(struct block_device
case BLKTRACESTART:
start = 1;
case BLKTRACESTOP:
break;
default:
ret = -ENOTTY;
-@@ -704,10 +738,14 @@ int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)
+@@ -704,10 +738,14 @@ int blk_trace_ioctl(struct block_device
**/
void blk_trace_shutdown(struct request_queue *q)
{
}
/*
---
-2.20.1
-
-From 983c9cde9359d5198ebd9adfcb1b9378b98d64c8 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Jan Kara <jack@suse.cz>
Date: Thu, 6 Feb 2020 15:28:12 +0100
Subject: blktrace: Protect q->blk_trace with RCU
- Drop changes in blk_trace_note_message_enabled(), blk_trace_bio_get_cgid()
- Adjust context]
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- include/linux/blkdev.h | 2 +-
- include/linux/blktrace_api.h | 6 +-
- kernel/trace/blktrace.c | 110 +++++++++++++++++++++++++----------
+ include/linux/blkdev.h | 2
+ include/linux/blktrace_api.h | 6 +-
+ kernel/trace/blktrace.c | 110 +++++++++++++++++++++++++++++++------------
3 files changed, 86 insertions(+), 32 deletions(-)
-diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index ab819210e0112..6e83ea61436a7 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -431,7 +431,7 @@ struct request_queue {
struct mutex blk_trace_mutex;
#endif
/*
-diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h
-index afc1343df3c7a..e644bfe50019c 100644
--- a/include/linux/blktrace_api.h
+++ b/include/linux/blktrace_api.h
-@@ -51,9 +51,13 @@ void __trace_note_message(struct blk_trace *, const char *fmt, ...);
+@@ -51,9 +51,13 @@ void __trace_note_message(struct blk_tra
**/
#define blk_add_trace_msg(q, fmt, ...) \
do { \
} while (0)
#define BLK_TN_MAX_MSG 128
-diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
-index ea18c6997eb23..bf9bf3f22edb5 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
@@ -319,6 +319,7 @@ static void put_probe_ref(void)
blk_trace_free(bt);
put_probe_ref();
}
-@@ -629,8 +630,10 @@ static int compat_blk_trace_setup(struct request_queue *q, char *name,
+@@ -629,8 +630,10 @@ static int compat_blk_trace_setup(struct
static int __blk_trace_startstop(struct request_queue *q, int start)
{
int ret;
if (bt == NULL)
return -EINVAL;
-@@ -739,8 +742,8 @@ int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)
+@@ -739,8 +742,8 @@ int blk_trace_ioctl(struct block_device
void blk_trace_shutdown(struct request_queue *q)
{
mutex_lock(&q->blk_trace_mutex);
__blk_trace_startstop(q, 0);
__blk_trace_remove(q);
}
-@@ -766,10 +769,14 @@ void blk_trace_shutdown(struct request_queue *q)
+@@ -766,10 +769,14 @@ void blk_trace_shutdown(struct request_q
static void blk_add_trace_rq(struct request_queue *q, struct request *rq,
unsigned int nr_bytes, u32 what)
{
if (rq->cmd_type == REQ_TYPE_BLOCK_PC) {
what |= BLK_TC_ACT(BLK_TC_PC);
-@@ -780,6 +787,7 @@ static void blk_add_trace_rq(struct request_queue *q, struct request *rq,
+@@ -780,6 +787,7 @@ static void blk_add_trace_rq(struct requ
__blk_add_trace(bt, blk_rq_pos(rq), nr_bytes,
rq->cmd_flags, what, rq->errors, 0, NULL);
}
}
static void blk_add_trace_rq_abort(void *ignore,
-@@ -829,13 +837,18 @@ static void blk_add_trace_rq_complete(void *ignore,
+@@ -829,13 +837,18 @@ static void blk_add_trace_rq_complete(vo
static void blk_add_trace_bio(struct request_queue *q, struct bio *bio,
u32 what, int error)
{
}
static void blk_add_trace_bio_bounce(void *ignore,
-@@ -880,10 +893,13 @@ static void blk_add_trace_getrq(void *ignore,
+@@ -880,10 +893,13 @@ static void blk_add_trace_getrq(void *ig
if (bio)
blk_add_trace_bio(q, bio, BLK_TA_GETRQ, 0);
else {
}
}
-@@ -895,27 +911,35 @@ static void blk_add_trace_sleeprq(void *ignore,
+@@ -895,27 +911,35 @@ static void blk_add_trace_sleeprq(void *
if (bio)
blk_add_trace_bio(q, bio, BLK_TA_SLEEPRQ, 0);
else {
if (bt) {
__be64 rpdu = cpu_to_be64(depth);
u32 what;
-@@ -927,14 +951,17 @@ static void blk_add_trace_unplug(void *ignore, struct request_queue *q,
+@@ -927,14 +951,17 @@ static void blk_add_trace_unplug(void *i
__blk_add_trace(bt, 0, 0, 0, what, 0, sizeof(rpdu), &rpdu);
}
if (bt) {
__be64 rpdu = cpu_to_be64(pdu);
-@@ -942,6 +969,7 @@ static void blk_add_trace_split(void *ignore,
+@@ -942,6 +969,7 @@ static void blk_add_trace_split(void *ig
bio->bi_iter.bi_size, bio->bi_rw, BLK_TA_SPLIT,
bio->bi_error, sizeof(rpdu), &rpdu);
}
}
/**
-@@ -961,11 +989,15 @@ static void blk_add_trace_bio_remap(void *ignore,
+@@ -961,11 +989,15 @@ static void blk_add_trace_bio_remap(void
struct request_queue *q, struct bio *bio,
dev_t dev, sector_t from)
{
r.device_from = cpu_to_be32(dev);
r.device_to = cpu_to_be32(bio->bi_bdev->bd_dev);
-@@ -974,6 +1006,7 @@ static void blk_add_trace_bio_remap(void *ignore,
+@@ -974,6 +1006,7 @@ static void blk_add_trace_bio_remap(void
__blk_add_trace(bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size,
bio->bi_rw, BLK_TA_REMAP, bio->bi_error,
sizeof(r), &r);
}
/**
-@@ -994,11 +1027,15 @@ static void blk_add_trace_rq_remap(void *ignore,
+@@ -994,11 +1027,15 @@ static void blk_add_trace_rq_remap(void
struct request *rq, dev_t dev,
sector_t from)
{
r.device_from = cpu_to_be32(dev);
r.device_to = cpu_to_be32(disk_devt(rq->rq_disk));
-@@ -1007,6 +1044,7 @@ static void blk_add_trace_rq_remap(void *ignore,
+@@ -1007,6 +1044,7 @@ static void blk_add_trace_rq_remap(void
__blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq),
rq_data_dir(rq), BLK_TA_REMAP, !!rq->errors,
sizeof(r), &r);
}
/**
-@@ -1024,10 +1062,14 @@ void blk_add_driver_data(struct request_queue *q,
+@@ -1024,10 +1062,14 @@ void blk_add_driver_data(struct request_
struct request *rq,
void *data, size_t len)
{
if (rq->cmd_type == REQ_TYPE_BLOCK_PC)
__blk_add_trace(bt, 0, blk_rq_bytes(rq), 0,
-@@ -1035,6 +1077,7 @@ void blk_add_driver_data(struct request_queue *q,
+@@ -1035,6 +1077,7 @@ void blk_add_driver_data(struct request_
else
__blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), 0,
BLK_TA_DRV_DATA, rq->errors, len, data);
}
EXPORT_SYMBOL_GPL(blk_add_driver_data);
-@@ -1526,6 +1569,7 @@ static int blk_trace_remove_queue(struct request_queue *q)
+@@ -1526,6 +1569,7 @@ static int blk_trace_remove_queue(struct
return -EINVAL;
put_probe_ref();
blk_trace_free(bt);
return 0;
}
-@@ -1686,6 +1730,7 @@ static ssize_t sysfs_blk_trace_attr_show(struct device *dev,
+@@ -1686,6 +1730,7 @@ static ssize_t sysfs_blk_trace_attr_show
struct hd_struct *p = dev_to_part(dev);
struct request_queue *q;
struct block_device *bdev;
ssize_t ret = -ENXIO;
bdev = bdget(part_devt(p));
-@@ -1698,21 +1743,23 @@ static ssize_t sysfs_blk_trace_attr_show(struct device *dev,
+@@ -1698,21 +1743,23 @@ static ssize_t sysfs_blk_trace_attr_show
mutex_lock(&q->blk_trace_mutex);
out_unlock_bdev:
mutex_unlock(&q->blk_trace_mutex);
-@@ -1729,6 +1776,7 @@ static ssize_t sysfs_blk_trace_attr_store(struct device *dev,
+@@ -1729,6 +1776,7 @@ static ssize_t sysfs_blk_trace_attr_stor
struct block_device *bdev;
struct request_queue *q;
struct hd_struct *p;
u64 value;
ssize_t ret = -EINVAL;
-@@ -1759,8 +1807,10 @@ static ssize_t sysfs_blk_trace_attr_store(struct device *dev,
+@@ -1759,8 +1807,10 @@ static ssize_t sysfs_blk_trace_attr_stor
mutex_lock(&q->blk_trace_mutex);
ret = 0;
goto out_unlock_bdev;
}
-@@ -1772,18 +1822,18 @@ static ssize_t sysfs_blk_trace_attr_store(struct device *dev,
+@@ -1772,18 +1822,18 @@ static ssize_t sysfs_blk_trace_attr_stor
}
ret = 0;
}
out_unlock_bdev:
---
-2.20.1
-
-From 97a8c1f2fc99b003af733258a9da0e81f7a28f65 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Logan Gunthorpe <logang@deltatee.com>
Date: Fri, 17 Mar 2017 12:48:08 -0600
-Subject: chardev: add helper function to register char devs with a struct
- device
+Subject: chardev: add helper function to register char devs with a struct device
From: Logan Gunthorpe <logang@deltatee.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- fs/char_dev.c | 86 ++++++++++++++++++++++++++++++++++++++++++++
- include/linux/cdev.h | 5 +++
+ fs/char_dev.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ include/linux/cdev.h | 5 ++
2 files changed, 91 insertions(+)
-diff --git a/fs/char_dev.c b/fs/char_dev.c
-index f1f3bb8127997..9154a2d7b195a 100644
--- a/fs/char_dev.c
+++ b/fs/char_dev.c
-@@ -472,6 +472,85 @@ int cdev_add(struct cdev *p, dev_t dev, unsigned count)
+@@ -472,6 +472,85 @@ int cdev_add(struct cdev *p, dev_t dev,
return 0;
}
static void cdev_unmap(dev_t dev, unsigned count)
{
kobj_unmap(cdev_map, dev, count);
-@@ -483,6 +562,10 @@ static void cdev_unmap(dev_t dev, unsigned count)
+@@ -483,6 +562,10 @@ static void cdev_unmap(dev_t dev, unsign
*
* cdev_del() removes @p from the system, possibly freeing the structure
* itself.
+EXPORT_SYMBOL(cdev_device_del);
EXPORT_SYMBOL(__register_chrdev);
EXPORT_SYMBOL(__unregister_chrdev);
-diff --git a/include/linux/cdev.h b/include/linux/cdev.h
-index f8763615a5f2d..408bc09ce497b 100644
--- a/include/linux/cdev.h
+++ b/include/linux/cdev.h
@@ -4,6 +4,7 @@
void cdev_del(struct cdev *);
void cd_forget(struct inode *);
---
-2.20.1
-
-From 0aab6dfe4fbb5946ad60d17d44809b87c6db0f7f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Shijie Luo <luoshijie1@huawei.com>
Date: Mon, 10 Feb 2020 20:17:52 -0500
Subject: ext4: add cond_resched() to ext4_protect_reserved_inode
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@kernel.org
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- fs/ext4/block_validity.c | 1 +
+ fs/ext4/block_validity.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/fs/ext4/block_validity.c b/fs/ext4/block_validity.c
-index ccd80f2b3b19b..d5055b3adcccd 100644
--- a/fs/ext4/block_validity.c
+++ b/fs/ext4/block_validity.c
-@@ -152,6 +152,7 @@ static int ext4_protect_reserved_inode(struct super_block *sb, u32 ino)
+@@ -152,6 +152,7 @@ static int ext4_protect_reserved_inode(s
return PTR_ERR(inode);
num = (inode->i_size + sb->s_blocksize - 1) >> sb->s_blocksize_bits;
while (i < num) {
map.m_lblk = i;
map.m_len = num - i;
n = ext4_map_blocks(NULL, inode, &map, 0);
---
-2.20.1
-
-From 8a8ddda4cb5f9ea6bcc6b32d5938a978b73ee835 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Sabrina Dubroca <sd@queasysnail.net>
Date: Wed, 4 Dec 2019 15:35:52 +0100
Subject: net: ipv6: add net argument to ip6_dst_lookup_flow
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 4.4: adjust context]
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- include/net/ipv6.h | 2 +-
- net/dccp/ipv6.c | 6 +++---
- net/ipv6/af_inet6.c | 2 +-
- net/ipv6/datagram.c | 2 +-
- net/ipv6/inet6_connection_sock.c | 4 ++--
- net/ipv6/ip6_output.c | 8 ++++----
- net/ipv6/raw.c | 2 +-
- net/ipv6/syncookies.c | 2 +-
- net/ipv6/tcp_ipv6.c | 4 ++--
- net/l2tp/l2tp_ip6.c | 2 +-
- net/sctp/ipv6.c | 4 ++--
+ include/net/ipv6.h | 2 +-
+ net/dccp/ipv6.c | 6 +++---
+ net/ipv6/af_inet6.c | 2 +-
+ net/ipv6/datagram.c | 2 +-
+ net/ipv6/inet6_connection_sock.c | 4 ++--
+ net/ipv6/ip6_output.c | 8 ++++----
+ net/ipv6/raw.c | 2 +-
+ net/ipv6/syncookies.c | 2 +-
+ net/ipv6/tcp_ipv6.c | 4 ++--
+ net/l2tp/l2tp_ip6.c | 2 +-
+ net/sctp/ipv6.c | 4 ++--
11 files changed, 19 insertions(+), 19 deletions(-)
-diff --git a/include/net/ipv6.h b/include/net/ipv6.h
-index c07cf9596b6fb..6258264a0bf73 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
-@@ -853,7 +853,7 @@ static inline struct sk_buff *ip6_finish_skb(struct sock *sk)
+@@ -853,7 +853,7 @@ static inline struct sk_buff *ip6_finish
int ip6_dst_lookup(struct net *net, struct sock *sk, struct dst_entry **dst,
struct flowi6 *fl6);
const struct in6_addr *final_dst);
struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6,
const struct in6_addr *final_dst);
-diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
-index 10eabd1a60aa7..736cc95b52011 100644
--- a/net/dccp/ipv6.c
+++ b/net/dccp/ipv6.c
-@@ -209,7 +209,7 @@ static int dccp_v6_send_response(const struct sock *sk, struct request_sock *req
+@@ -209,7 +209,7 @@ static int dccp_v6_send_response(const s
final_p = fl6_update_dst(&fl6, rcu_dereference(np->opt), &final);
rcu_read_unlock();
if (IS_ERR(dst)) {
err = PTR_ERR(dst);
dst = NULL;
-@@ -276,7 +276,7 @@ static void dccp_v6_ctl_send_reset(const struct sock *sk, struct sk_buff *rxskb)
+@@ -276,7 +276,7 @@ static void dccp_v6_ctl_send_reset(const
security_skb_classify_flow(rxskb, flowi6_to_flowi(&fl6));
/* sk = NULL, but it is safe for now. RST socket required. */
if (!IS_ERR(dst)) {
skb_dst_set(skb, dst);
ip6_xmit(ctl_sk, skb, &fl6, NULL, 0);
-@@ -879,7 +879,7 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
+@@ -879,7 +879,7 @@ static int dccp_v6_connect(struct sock *
opt = rcu_dereference_protected(np->opt, sock_owned_by_user(sk));
final_p = fl6_update_dst(&fl6, opt, &final);
if (IS_ERR(dst)) {
err = PTR_ERR(dst);
goto failure;
-diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
-index 46bf78a2843ac..9d04393e87019 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
-@@ -683,7 +683,7 @@ int inet6_sk_rebuild_header(struct sock *sk)
+@@ -683,7 +683,7 @@ int inet6_sk_rebuild_header(struct sock
&final);
rcu_read_unlock();
if (IS_ERR(dst)) {
sk->sk_route_caps = 0;
sk->sk_err_soft = -PTR_ERR(dst);
-diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c
-index 27cdf543c5390..f33154365b643 100644
--- a/net/ipv6/datagram.c
+++ b/net/ipv6/datagram.c
@@ -179,7 +179,7 @@ ipv4_connected:
err = 0;
if (IS_ERR(dst)) {
err = PTR_ERR(dst);
-diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c
-index a7ca2cde2ecbc..b31ab511c7671 100644
--- a/net/ipv6/inet6_connection_sock.c
+++ b/net/ipv6/inet6_connection_sock.c
-@@ -88,7 +88,7 @@ struct dst_entry *inet6_csk_route_req(const struct sock *sk,
+@@ -88,7 +88,7 @@ struct dst_entry *inet6_csk_route_req(co
fl6->fl6_sport = htons(ireq->ir_num);
security_req_classify_flow(req, flowi6_to_flowi(fl6));
if (IS_ERR(dst))
return NULL;
-@@ -142,7 +142,7 @@ static struct dst_entry *inet6_csk_route_socket(struct sock *sk,
+@@ -142,7 +142,7 @@ static struct dst_entry *inet6_csk_route
dst = __inet6_csk_dst_check(sk, np->dst_cookie);
if (!dst) {
if (!IS_ERR(dst))
ip6_dst_store(sk, dst, NULL, NULL);
-diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
-index e39dc94486b2c..1e2b8d33d303b 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1057,13 +1057,13 @@ EXPORT_SYMBOL_GPL(ip6_dst_lookup);
if (err)
return ERR_PTR(err);
if (final_dst)
-@@ -1071,7 +1071,7 @@ struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6,
+@@ -1071,7 +1071,7 @@ struct dst_entry *ip6_dst_lookup_flow(co
if (!fl6->flowi6_oif)
fl6->flowi6_oif = l3mdev_fib_oif(dst->dev);
}
EXPORT_SYMBOL_GPL(ip6_dst_lookup_flow);
-@@ -1096,7 +1096,7 @@ struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6,
+@@ -1096,7 +1096,7 @@ struct dst_entry *ip6_sk_dst_lookup_flow
dst = ip6_sk_dst_check(sk, dst, fl6);
if (!dst)
return dst;
}
-diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
-index 86c75e97cfec3..67cdcd3d644fa 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
-@@ -889,7 +889,7 @@ static int rawv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
+@@ -889,7 +889,7 @@ static int rawv6_sendmsg(struct sock *sk
if (hdrincl)
fl6.flowi6_flags |= FLOWI_FLAG_KNOWN_NH;
if (IS_ERR(dst)) {
err = PTR_ERR(dst);
goto out;
-diff --git a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c
-index aee87282d3521..fb3ba2a511196 100644
--- a/net/ipv6/syncookies.c
+++ b/net/ipv6/syncookies.c
-@@ -231,7 +231,7 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
+@@ -231,7 +231,7 @@ struct sock *cookie_v6_check(struct sock
fl6.fl6_sport = inet_sk(sk)->inet_sport;
security_req_classify_flow(req, flowi6_to_flowi(&fl6));
if (IS_ERR(dst))
goto out_free;
}
-diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
-index 6a36fcc5c4e11..b4ffcec732b49 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
-@@ -245,7 +245,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
+@@ -245,7 +245,7 @@ static int tcp_v6_connect(struct sock *s
security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));
if (IS_ERR(dst)) {
err = PTR_ERR(dst);
goto failure;
-@@ -831,7 +831,7 @@ static void tcp_v6_send_response(const struct sock *sk, struct sk_buff *skb, u32
+@@ -831,7 +831,7 @@ static void tcp_v6_send_response(const s
* Underlying function will use this to retrieve the network
* namespace
*/
if (!IS_ERR(dst)) {
skb_dst_set(buff, dst);
ip6_xmit(ctl_sk, buff, &fl6, NULL, tclass);
-diff --git a/net/l2tp/l2tp_ip6.c b/net/l2tp/l2tp_ip6.c
-index af04a8a682697..2b5230ef8536a 100644
--- a/net/l2tp/l2tp_ip6.c
+++ b/net/l2tp/l2tp_ip6.c
-@@ -619,7 +619,7 @@ static int l2tp_ip6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
+@@ -619,7 +619,7 @@ static int l2tp_ip6_sendmsg(struct sock
security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));
if (IS_ERR(dst)) {
err = PTR_ERR(dst);
goto out;
-diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
-index dd097e065f39d..1a6849add0e34 100644
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
-@@ -268,7 +268,7 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr,
+@@ -268,7 +268,7 @@ static void sctp_v6_get_dst(struct sctp_
final_p = fl6_update_dst(fl6, rcu_dereference(np->opt), &final);
rcu_read_unlock();
if (!asoc || saddr) {
t->dst = dst;
memcpy(fl, &_fl, sizeof(_fl));
-@@ -326,7 +326,7 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr,
+@@ -326,7 +326,7 @@ static void sctp_v6_get_dst(struct sctp_
fl6->saddr = laddr->a.v6.sin6_addr;
fl6->fl6_sport = laddr->a.v6.sin6_port;
final_p = fl6_update_dst(fl6, rcu_dereference(np->opt), &final);
if (IS_ERR(bdst))
continue;
---
-2.20.1
-
-From e3a32350aae0a76746648667d9515e286910ed50 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Sabrina Dubroca <sd@queasysnail.net>
Date: Wed, 4 Dec 2019 15:35:53 +0100
Subject: net: ipv6_stub: use ip6_dst_lookup_flow instead of ip6_dst_lookup
- Drop changes in lwt_bpf.c, mlx5, and rxe
- Adjust filename, context, indentation]
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/infiniband/core/addr.c | 6 +++---
- drivers/net/geneve.c | 4 +++-
- drivers/net/vxlan.c | 10 ++++------
- include/net/addrconf.h | 6 ++++--
- net/ipv6/addrconf_core.c | 11 ++++++-----
- net/ipv6/af_inet6.c | 2 +-
- net/mpls/af_mpls.c | 7 +++----
- net/tipc/udp_media.c | 9 ++++++---
+ drivers/infiniband/core/addr.c | 6 +++---
+ drivers/net/geneve.c | 4 +++-
+ drivers/net/vxlan.c | 10 ++++------
+ include/net/addrconf.h | 6 ++++--
+ net/ipv6/addrconf_core.c | 11 ++++++-----
+ net/ipv6/af_inet6.c | 2 +-
+ net/mpls/af_mpls.c | 7 +++----
+ net/tipc/udp_media.c | 9 ++++++---
8 files changed, 30 insertions(+), 25 deletions(-)
-diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
-index 68835de07e071..a8349100854ef 100644
--- a/drivers/infiniband/core/addr.c
+++ b/drivers/infiniband/core/addr.c
-@@ -293,9 +293,9 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
+@@ -293,9 +293,9 @@ static int addr6_resolve(struct sockaddr
fl6.saddr = src_in->sin6_addr;
fl6.flowi6_oif = addr->bound_dev_if;
if (ipv6_addr_any(&fl6.saddr)) {
ret = ipv6_dev_get_saddr(addr->net, ip6_dst_idev(dst)->dev,
-diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
-index 1988bc00de3c7..ec13e2ae6d16e 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
-@@ -781,7 +781,9 @@ static struct dst_entry *geneve_get_v6_dst(struct sk_buff *skb,
+@@ -781,7 +781,9 @@ static struct dst_entry *geneve_get_v6_d
fl6->daddr = geneve->remote.sin6.sin6_addr;
}
netdev_dbg(dev, "no route to %pI6\n", &fl6->daddr);
return ERR_PTR(-ENETUNREACH);
}
-diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
-index 752f44a0e3afc..d6ae6d3c98ed8 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
-@@ -1864,7 +1864,6 @@ static struct dst_entry *vxlan6_get_route(struct vxlan_dev *vxlan,
+@@ -1864,7 +1864,6 @@ static struct dst_entry *vxlan6_get_rout
{
struct dst_entry *ndst;
struct flowi6 fl6;
memset(&fl6, 0, sizeof(fl6));
fl6.flowi6_oif = oif;
-@@ -1873,11 +1872,10 @@ static struct dst_entry *vxlan6_get_route(struct vxlan_dev *vxlan,
+@@ -1873,11 +1872,10 @@ static struct dst_entry *vxlan6_get_rout
fl6.flowi6_mark = skb->mark;
fl6.flowi6_proto = IPPROTO_UDP;
*saddr = fl6.saddr;
return ndst;
-diff --git a/include/net/addrconf.h b/include/net/addrconf.h
-index af032e5405f62..27a1833c7b00f 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -192,8 +192,10 @@ struct ipv6_stub {
void (*udpv6_encap_enable)(void);
void (*ndisc_send_na)(struct net_device *dev, const struct in6_addr *daddr,
const struct in6_addr *solicited_addr,
-diff --git a/net/ipv6/addrconf_core.c b/net/ipv6/addrconf_core.c
-index bfa941fc11650..129324b36fb60 100644
--- a/net/ipv6/addrconf_core.c
+++ b/net/ipv6/addrconf_core.c
-@@ -107,15 +107,16 @@ int inet6addr_notifier_call_chain(unsigned long val, void *v)
+@@ -107,15 +107,16 @@ int inet6addr_notifier_call_chain(unsign
}
EXPORT_SYMBOL(inet6addr_notifier_call_chain);
};
EXPORT_SYMBOL_GPL(ipv6_stub);
-diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
-index 9d04393e87019..37a562fc13d5b 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
-@@ -841,7 +841,7 @@ static struct pernet_operations inet6_net_ops = {
+@@ -841,7 +841,7 @@ static struct pernet_operations inet6_ne
static const struct ipv6_stub ipv6_stub_impl = {
.ipv6_sock_mc_join = ipv6_sock_mc_join,
.ipv6_sock_mc_drop = ipv6_sock_mc_drop,
.udpv6_encap_enable = udpv6_encap_enable,
.ndisc_send_na = ndisc_send_na,
.nd_tbl = &nd_tbl,
-diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c
-index c2ce7dec51980..50d9138b2a1cc 100644
--- a/net/mpls/af_mpls.c
+++ b/net/mpls/af_mpls.c
-@@ -470,16 +470,15 @@ static struct net_device *inet6_fib_lookup_dev(struct net *net,
+@@ -470,16 +470,15 @@ static struct net_device *inet6_fib_look
struct net_device *dev;
struct dst_entry *dst;
struct flowi6 fl6;
dev = dst->dev;
dev_hold(dev);
-diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c
-index cb39f1c4251ea..ac20794392420 100644
--- a/net/tipc/udp_media.c
+++ b/net/tipc/udp_media.c
-@@ -200,10 +200,13 @@ static int tipc_udp_send_msg(struct net *net, struct sk_buff *skb,
+@@ -200,10 +200,13 @@ static int tipc_udp_send_msg(struct net
.saddr = src->ipv6,
.flowi6_proto = IPPROTO_UDP
};
ttl = ip6_dst_hoplimit(ndst);
err = udp_tunnel6_xmit_skb(ndst, ub->ubsock->sk, skb,
ndst->dev, &src->ipv6,
---
-2.20.1
-
-From 1d25f0caeabb1ff4e0494022f4905583ccc3e9ad Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: Tue, 14 Feb 2017 10:23:34 -0800
Subject: ptp: create "pins" together with the rest of attributes
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 4.9: adjust context]
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/ptp/ptp_clock.c | 20 +++++++++++---------
- drivers/ptp/ptp_private.h | 7 ++++---
- drivers/ptp/ptp_sysfs.c | 39 +++++++++------------------------------
+ drivers/ptp/ptp_clock.c | 20 +++++++++++---------
+ drivers/ptp/ptp_private.h | 7 ++++---
+ drivers/ptp/ptp_sysfs.c | 39 +++++++++------------------------------
3 files changed, 24 insertions(+), 42 deletions(-)
-diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
-index 113b66f1fc9ed..5f5d54f5153fb 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
-@@ -214,16 +214,17 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
+@@ -214,16 +214,17 @@ struct ptp_clock *ptp_clock_register(str
mutex_init(&ptp->pincfg_mux);
init_waitqueue_head(&ptp->tsev_wq);
mutex_destroy(&ptp->tsevq_mux);
mutex_destroy(&ptp->pincfg_mux);
no_slot:
-@@ -272,8 +273,9 @@ int ptp_clock_unregister(struct ptp_clock *ptp)
+@@ -272,8 +273,9 @@ int ptp_clock_unregister(struct ptp_cloc
/* Release the clock's resources. */
if (ptp->pps_source)
pps_unregister_source(ptp->pps_source);
posix_clock_unregister(&ptp->clock);
return 0;
-diff --git a/drivers/ptp/ptp_private.h b/drivers/ptp/ptp_private.h
-index 9c5d41421b651..d95888974d0c6 100644
--- a/drivers/ptp/ptp_private.h
+++ b/drivers/ptp/ptp_private.h
@@ -54,6 +54,8 @@ struct ptp_clock {
+void ptp_cleanup_pin_groups(struct ptp_clock *ptp);
#endif
-diff --git a/drivers/ptp/ptp_sysfs.c b/drivers/ptp/ptp_sysfs.c
-index a55a6eb4dfde9..731d0423c8aa7 100644
--- a/drivers/ptp/ptp_sysfs.c
+++ b/drivers/ptp/ptp_sysfs.c
-@@ -268,25 +268,14 @@ static ssize_t ptp_pin_store(struct device *dev, struct device_attribute *attr,
+@@ -268,25 +268,14 @@ static ssize_t ptp_pin_store(struct devi
return count;
}
ptp->pin_dev_attr = kzalloc(n_pins * sizeof(*ptp->pin_dev_attr),
GFP_KERNEL);
if (!ptp->pin_dev_attr)
-@@ -310,28 +299,18 @@ static int ptp_populate_pins(struct ptp_clock *ptp)
+@@ -310,28 +299,18 @@ static int ptp_populate_pins(struct ptp_
ptp->pin_attr_group.name = "pins";
ptp->pin_attr_group.attrs = ptp->pin_attr;
+ kfree(ptp->pin_attr);
+ kfree(ptp->pin_dev_attr);
}
---
-2.20.1
-
-From e07336a2fcddd851f89dfcbfda427edebd1291c5 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: Tue, 14 Feb 2017 10:23:31 -0800
Subject: ptp: do not explicitly set drvdata in ptp_clock_register()
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/ptp/ptp_clock.c | 2 --
+ drivers/ptp/ptp_clock.c | 2 --
1 file changed, 2 deletions(-)
-diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
-index 60a5e0c63a136..113b66f1fc9ed 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
-@@ -220,8 +220,6 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
+@@ -220,8 +220,6 @@ struct ptp_clock *ptp_clock_register(str
if (IS_ERR(ptp->dev))
goto no_device;
err = ptp_populate_sysfs(ptp);
if (err)
goto no_sysfs;
---
-2.20.1
-
-From 0e637f58378032270601f378e5a23b473527d9a3 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: YueHaibing <yuehaibing@huawei.com>
Date: Fri, 23 Nov 2018 09:54:55 +0800
Subject: ptp: Fix pass zero to ERR_PTR() in ptp_clock_register
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/ptp/ptp_clock.c | 5 ++++-
+ drivers/ptp/ptp_clock.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
-diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
-index 5f5d54f5153fb..a29772667f79b 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
-@@ -222,8 +222,10 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
+@@ -222,8 +222,10 @@ struct ptp_clock *ptp_clock_register(str
ptp->dev = device_create_with_groups(ptp_class, parent, ptp->devid,
ptp, ptp->pin_attr_groups,
"ptp%d", ptp->index);
/* Register a new PPS source. */
if (info->pps) {
-@@ -234,6 +236,7 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
+@@ -234,6 +236,7 @@ struct ptp_clock *ptp_clock_register(str
pps.owner = info->owner;
ptp->pps_source = pps_register_source(&pps, PTP_PPS_DEFAULTS);
if (!ptp->pps_source) {
pr_err("failed to register pps source\n");
goto no_pps;
}
---
-2.20.1
-
-From fa40eab18c05963de6eaefd898a7ee28e1899c2a Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Vladis Dronov <vdronov@redhat.com>
Date: Fri, 27 Dec 2019 03:26:27 +0100
Subject: ptp: fix the race between the release of ptp_clock and cdev
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/ptp/ptp_clock.c | 31 ++++++++++++++-----------------
- drivers/ptp/ptp_private.h | 2 +-
- include/linux/posix-clock.h | 19 +++++++++++--------
- kernel/time/posix-clock.c | 31 +++++++++++++------------------
+ drivers/ptp/ptp_clock.c | 31 ++++++++++++++-----------------
+ drivers/ptp/ptp_private.h | 2 +-
+ include/linux/posix-clock.h | 19 +++++++++++--------
+ kernel/time/posix-clock.c | 31 +++++++++++++------------------
4 files changed, 39 insertions(+), 44 deletions(-)
-diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
-index a29772667f79b..977b52dbcbba2 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
-@@ -171,9 +171,9 @@ static struct posix_clock_operations ptp_clock_ops = {
+@@ -171,9 +171,9 @@ static struct posix_clock_operations ptp
.read = ptp_read,
};
mutex_destroy(&ptp->tsevq_mux);
mutex_destroy(&ptp->pincfg_mux);
-@@ -205,7 +205,6 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
+@@ -205,7 +205,6 @@ struct ptp_clock *ptp_clock_register(str
}
ptp->clock.ops = ptp_clock_ops;
ptp->info = info;
ptp->devid = MKDEV(major, index);
ptp->index = index;
-@@ -218,15 +217,6 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
+@@ -218,15 +217,6 @@ struct ptp_clock *ptp_clock_register(str
if (err)
goto no_pin_groups;
/* Register a new PPS source. */
if (info->pps) {
struct pps_source_info pps;
-@@ -242,8 +232,18 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
+@@ -242,8 +232,18 @@ struct ptp_clock *ptp_clock_register(str
}
}
ptp_cleanup_pin_groups(ptp);
no_pin_groups:
mutex_destroy(&ptp->tsevq_mux);
-@@ -277,7 +275,6 @@ int ptp_clock_unregister(struct ptp_clock *ptp)
+@@ -277,7 +275,6 @@ int ptp_clock_unregister(struct ptp_cloc
if (ptp->pps_source)
pps_unregister_source(ptp->pps_source);
ptp_cleanup_pin_groups(ptp);
posix_clock_unregister(&ptp->clock);
-diff --git a/drivers/ptp/ptp_private.h b/drivers/ptp/ptp_private.h
-index d95888974d0c6..15346e840caa9 100644
--- a/drivers/ptp/ptp_private.h
+++ b/drivers/ptp/ptp_private.h
@@ -40,7 +40,7 @@ struct timestamp_event_queue {
struct ptp_clock_info *info;
dev_t devid;
int index; /* index into clocks.map */
-diff --git a/include/linux/posix-clock.h b/include/linux/posix-clock.h
-index 83b22ae9ae12a..b39420a0321c3 100644
--- a/include/linux/posix-clock.h
+++ b/include/linux/posix-clock.h
@@ -104,29 +104,32 @@ struct posix_clock_operations {
/**
* posix_clock_unregister() - unregister a clock
-diff --git a/kernel/time/posix-clock.c b/kernel/time/posix-clock.c
-index e24008c098c6b..45a0a26023d4b 100644
--- a/kernel/time/posix-clock.c
+++ b/kernel/time/posix-clock.c
@@ -25,8 +25,6 @@
/*
* Returns NULL if the posix_clock instance attached to 'fp' is old and stale.
*/
-@@ -168,7 +166,7 @@ static int posix_clock_open(struct inode *inode, struct file *fp)
+@@ -168,7 +166,7 @@ static int posix_clock_open(struct inode
err = 0;
if (!err) {
fp->private_data = clk;
}
out:
-@@ -184,7 +182,7 @@ static int posix_clock_release(struct inode *inode, struct file *fp)
+@@ -184,7 +182,7 @@ static int posix_clock_release(struct in
if (clk->ops.release)
err = clk->ops.release(clk);
fp->private_data = NULL;
-@@ -206,38 +204,35 @@ static const struct file_operations posix_clock_file_operations = {
+@@ -206,38 +204,35 @@ static const struct file_operations posi
#endif
};
}
EXPORT_SYMBOL_GPL(posix_clock_unregister);
---
-2.20.1
-
-From cff306c18d002a4a0ea187cae2115fc75d7f073a Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Vladis Dronov <vdronov@redhat.com>
Date: Mon, 13 Jan 2020 14:00:09 +0100
Subject: ptp: free ptp device pin descriptors properly
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/ptp/ptp_clock.c | 4 ++--
+ drivers/ptp/ptp_clock.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
-index 977b52dbcbba2..efe68b13704d8 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
-@@ -175,6 +175,7 @@ static void ptp_clock_release(struct device *dev)
+@@ -175,6 +175,7 @@ static void ptp_clock_release(struct dev
{
struct ptp_clock *ptp = container_of(dev, struct ptp_clock, dev);
mutex_destroy(&ptp->tsevq_mux);
mutex_destroy(&ptp->pincfg_mux);
ida_simple_remove(&ptp_clocks_map, ptp->index);
-@@ -275,9 +276,8 @@ int ptp_clock_unregister(struct ptp_clock *ptp)
+@@ -275,9 +276,8 @@ int ptp_clock_unregister(struct ptp_cloc
if (ptp->pps_source)
pps_unregister_source(ptp->pps_source);
return 0;
}
EXPORT_SYMBOL(ptp_clock_unregister);
---
-2.20.1
-
-From f988e8551a81f003ad32e2c403ea528e953b566f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
+From foo@baz Wed 13 May 2020 08:37:35 AM CEST
+From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: Tue, 14 Feb 2017 10:23:33 -0800
Subject: ptp: use is_visible method to hide unused attributes
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/ptp/ptp_sysfs.c | 125 ++++++++++++++++++----------------------
+ drivers/ptp/ptp_sysfs.c | 125 +++++++++++++++++++++---------------------------
1 file changed, 55 insertions(+), 70 deletions(-)
-diff --git a/drivers/ptp/ptp_sysfs.c b/drivers/ptp/ptp_sysfs.c
-index 302e626fe6b01..a55a6eb4dfde9 100644
--- a/drivers/ptp/ptp_sysfs.c
+++ b/drivers/ptp/ptp_sysfs.c
-@@ -46,27 +46,6 @@ PTP_SHOW_INT(n_periodic_outputs, n_per_out);
+@@ -46,27 +46,6 @@ PTP_SHOW_INT(n_periodic_outputs, n_per_o
PTP_SHOW_INT(n_programmable_pins, n_pins);
PTP_SHOW_INT(pps_available, pps);
static ssize_t extts_enable_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
-@@ -91,6 +70,7 @@ static ssize_t extts_enable_store(struct device *dev,
+@@ -91,6 +70,7 @@ static ssize_t extts_enable_store(struct
out:
return err;
}
static ssize_t period_store(struct device *dev,
struct device_attribute *attr,
-@@ -151,6 +132,7 @@ static ssize_t period_store(struct device *dev,
+@@ -151,6 +132,7 @@ static ssize_t period_store(struct devic
out:
return err;
}
static ssize_t pps_enable_store(struct device *dev,
struct device_attribute *attr,
-@@ -177,6 +159,57 @@ static ssize_t pps_enable_store(struct device *dev,
+@@ -177,6 +159,57 @@ static ssize_t pps_enable_store(struct d
out:
return err;
}
static int ptp_pin_name2index(struct ptp_clock *ptp, const char *name)
{
-@@ -235,26 +268,11 @@ static ssize_t ptp_pin_store(struct device *dev, struct device_attribute *attr,
+@@ -235,26 +268,11 @@ static ssize_t ptp_pin_store(struct devi
return count;
}
-out1:
- return err;
}
---
-2.20.1
-
scripts-decodecode-fix-trapping-instruction-formatting.patch
phy-micrel-disable-auto-negotiation-on-startup.patch
phy-micrel-ensure-interrupts-are-reenabled-on-resume.patch
+binfmt_elf-do-not-move-brk-for-interp-less-et_exec.patch
ext4-add-cond_resched-to-ext4_protect_reserved_inode.patch
net-ipv6-add-net-argument-to-ip6_dst_lookup_flow.patch
-net-ipv6_stub-use-ip6_dst_lookup_flow-instead-of-ip6.patch
-blktrace-fix-potential-deadlock-between-delete-sysfs.patch
-blktrace-fix-unlocked-access-to-init-start-stop-tear.patch
+net-ipv6_stub-use-ip6_dst_lookup_flow-instead-of-ip6_dst_lookup.patch
+blktrace-fix-potential-deadlock-between-delete-sysfs-ops.patch
+blktrace-fix-unlocked-access-to-init-start-stop-teardown.patch
blktrace-fix-trace-mutex-deadlock.patch
blktrace-protect-q-blk_trace-with-rcu.patch
blktrace-fix-dereference-after-null-check.patch
-ptp-do-not-explicitly-set-drvdata-in-ptp_clock_regis.patch
+ptp-do-not-explicitly-set-drvdata-in-ptp_clock_register.patch
ptp-use-is_visible-method-to-hide-unused-attributes.patch
ptp-create-pins-together-with-the-rest-of-attributes.patch
-chardev-add-helper-function-to-register-char-devs-wi.patch
+chardev-add-helper-function-to-register-char-devs-with-a-struct-device.patch
ptp-fix-pass-zero-to-err_ptr-in-ptp_clock_register.patch
-ptp-fix-the-race-between-the-release-of-ptp_clock-an.patch
+ptp-fix-the-race-between-the-release-of-ptp_clock-and-cdev.patch
ptp-free-ptp-device-pin-descriptors-properly.patch
-binfmt_elf-do-not-move-brk-for-interp-less-et_exec.patch