summaryrefslogtreecommitdiff
path: root/target/linux
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/ar71xx/patches-4.4/310-lib-add-rle-decompression.patch2
-rw-r--r--target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch8
-rw-r--r--target/linux/brcm2708/patches-4.4/0027-Main-bcm2708-bcm2709-linux-port.patch2
-rw-r--r--target/linux/brcm2708/patches-4.4/0062-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch4
-rw-r--r--target/linux/generic/patches-4.4/254-textsearch_kconfig_hacks.patch2
-rw-r--r--target/linux/generic/patches-4.4/262-compressor_kconfig_hack.patch2
-rw-r--r--target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch2
-rw-r--r--target/linux/generic/patches-4.4/650-pppoe_header_pad.patch4
-rw-r--r--target/linux/generic/patches-4.4/655-increase_skb_pad.patch2
-rw-r--r--target/linux/generic/patches-4.4/656-skb_reduce_truesize-helper.patch2
-rw-r--r--target/linux/generic/patches-4.4/664-codel_fix_3_12.patch2
-rw-r--r--target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch18
-rw-r--r--target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch12
-rw-r--r--target/linux/generic/patches-4.4/721-phy_packets.patch6
-rw-r--r--target/linux/generic/patches-4.4/902-debloat_proc.patch4
-rw-r--r--target/linux/mxs/patches-4.4/102-mxs-add-regulator-driver.patch2
-rw-r--r--target/linux/uml/patches-4.4/100-link-libpthread.patch11
17 files changed, 37 insertions, 48 deletions
diff --git a/target/linux/ar71xx/patches-4.4/310-lib-add-rle-decompression.patch b/target/linux/ar71xx/patches-4.4/310-lib-add-rle-decompression.patch
index e493bc1..f5466db 100644
--- a/target/linux/ar71xx/patches-4.4/310-lib-add-rle-decompression.patch
+++ b/target/linux/ar71xx/patches-4.4/310-lib-add-rle-decompression.patch
@@ -1,6 +1,6 @@
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -245,6 +245,9 @@ config LZMA_COMPRESS
+@@ -247,6 +247,9 @@ config LZMA_COMPRESS
config LZMA_DECOMPRESS
tristate
diff --git a/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch
index 3a61570..b4b749e 100644
--- a/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch
+++ b/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch
@@ -214,7 +214,7 @@
#include <linux/uaccess.h>
#include <linux/ipv6.h>
#include <linux/icmpv6.h>
-@@ -778,10 +779,10 @@ static void tcp_v6_send_response(const s
+@@ -779,10 +780,10 @@ static void tcp_v6_send_response(const s
topt = (__be32 *)(t1 + 1);
if (tsecr) {
@@ -241,7 +241,7 @@
*/
--- a/net/ipv6/datagram.c
+++ b/net/ipv6/datagram.c
-@@ -426,7 +426,7 @@ int ipv6_recv_error(struct sock *sk, str
+@@ -429,7 +429,7 @@ int ipv6_recv_error(struct sock *sk, str
ipv6_iface_scope_id(&sin->sin6_addr,
IP6CB(skb)->iif);
} else {
@@ -250,7 +250,7 @@
&sin->sin6_addr);
sin->sin6_scope_id = 0;
}
-@@ -763,12 +763,12 @@ int ip6_datagram_send_ctl(struct net *ne
+@@ -766,12 +766,12 @@ int ip6_datagram_send_ctl(struct net *ne
}
if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
@@ -359,7 +359,7 @@
for (p = *head; p; p = p->next) {
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -457,7 +457,7 @@ static struct neighbour *ipv4_neigh_look
+@@ -458,7 +458,7 @@ static struct neighbour *ipv4_neigh_look
else if (skb)
pkey = &ip_hdr(skb)->daddr;
diff --git a/target/linux/brcm2708/patches-4.4/0027-Main-bcm2708-bcm2709-linux-port.patch b/target/linux/brcm2708/patches-4.4/0027-Main-bcm2708-bcm2709-linux-port.patch
index 7a4c34d..8a5ffbb 100644
--- a/target/linux/brcm2708/patches-4.4/0027-Main-bcm2708-bcm2709-linux-port.patch
+++ b/target/linux/brcm2708/patches-4.4/0027-Main-bcm2708-bcm2709-linux-port.patch
@@ -140,7 +140,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
source "arch/arm/mach-alpine/Kconfig"
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
-@@ -1241,6 +1241,14 @@ choice
+@@ -1240,6 +1240,14 @@ choice
options; the platform specific options are deprecated
and will be soon removed.
diff --git a/target/linux/brcm2708/patches-4.4/0062-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch b/target/linux/brcm2708/patches-4.4/0062-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
index 03a603c..da08b51 100644
--- a/target/linux/brcm2708/patches-4.4/0062-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
+++ b/target/linux/brcm2708/patches-4.4/0062-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
@@ -10,7 +10,7 @@ Subject: [PATCH 062/156] config: Enable CONFIG_MEMCG, but leave it disabled
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
-@@ -5273,7 +5273,7 @@ int __init cgroup_init_early(void)
+@@ -5286,7 +5286,7 @@ int __init cgroup_init_early(void)
return 0;
}
@@ -19,7 +19,7 @@ Subject: [PATCH 062/156] config: Enable CONFIG_MEMCG, but leave it disabled
/**
* cgroup_init - cgroup initialization
-@@ -5769,6 +5769,27 @@ static int __init cgroup_disable(char *s
+@@ -5782,6 +5782,27 @@ static int __init cgroup_disable(char *s
}
__setup("cgroup_disable=", cgroup_disable);
diff --git a/target/linux/generic/patches-4.4/254-textsearch_kconfig_hacks.patch b/target/linux/generic/patches-4.4/254-textsearch_kconfig_hacks.patch
index a75883e..12cedbe 100644
--- a/target/linux/generic/patches-4.4/254-textsearch_kconfig_hacks.patch
+++ b/target/linux/generic/patches-4.4/254-textsearch_kconfig_hacks.patch
@@ -1,6 +1,6 @@
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -332,16 +332,16 @@ config BCH_CONST_T
+@@ -334,16 +334,16 @@ config BCH_CONST_T
# Textsearch support is select'ed if needed
#
config TEXTSEARCH
diff --git a/target/linux/generic/patches-4.4/262-compressor_kconfig_hack.patch b/target/linux/generic/patches-4.4/262-compressor_kconfig_hack.patch
index 13a51cf..edb9ff7 100644
--- a/target/linux/generic/patches-4.4/262-compressor_kconfig_hack.patch
+++ b/target/linux/generic/patches-4.4/262-compressor_kconfig_hack.patch
@@ -1,6 +1,6 @@
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -216,26 +216,26 @@ config 842_DECOMPRESS
+@@ -218,26 +218,26 @@ config 842_DECOMPRESS
tristate
config ZLIB_INFLATE
diff --git a/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch b/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch
index 3bba298..b75dd0f 100644
--- a/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch
+++ b/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch
@@ -1049,7 +1049,7 @@
+#endif
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -239,6 +239,12 @@ config LZ4_DECOMPRESS
+@@ -241,6 +241,12 @@ config LZ4_DECOMPRESS
source "lib/xz/Kconfig"
diff --git a/target/linux/generic/patches-4.4/650-pppoe_header_pad.patch b/target/linux/generic/patches-4.4/650-pppoe_header_pad.patch
index adba206..409de58 100644
--- a/target/linux/generic/patches-4.4/650-pppoe_header_pad.patch
+++ b/target/linux/generic/patches-4.4/650-pppoe_header_pad.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/ppp/pppoe.c
+++ b/drivers/net/ppp/pppoe.c
-@@ -877,7 +877,7 @@ static int pppoe_sendmsg(struct socket *
+@@ -879,7 +879,7 @@ static int pppoe_sendmsg(struct socket *
goto end;
@@ -9,7 +9,7 @@
0, GFP_KERNEL);
if (!skb) {
error = -ENOMEM;
-@@ -885,7 +885,7 @@ static int pppoe_sendmsg(struct socket *
+@@ -887,7 +887,7 @@ static int pppoe_sendmsg(struct socket *
}
/* Reserve space for headers. */
diff --git a/target/linux/generic/patches-4.4/655-increase_skb_pad.patch b/target/linux/generic/patches-4.4/655-increase_skb_pad.patch
index 33f65c4..e46e470 100644
--- a/target/linux/generic/patches-4.4/655-increase_skb_pad.patch
+++ b/target/linux/generic/patches-4.4/655-increase_skb_pad.patch
@@ -1,6 +1,6 @@
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2154,7 +2154,7 @@ static inline int pskb_network_may_pull(
+@@ -2155,7 +2155,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/
#ifndef NET_SKB_PAD
diff --git a/target/linux/generic/patches-4.4/656-skb_reduce_truesize-helper.patch b/target/linux/generic/patches-4.4/656-skb_reduce_truesize-helper.patch
index f781cbb..341a31b 100644
--- a/target/linux/generic/patches-4.4/656-skb_reduce_truesize-helper.patch
+++ b/target/linux/generic/patches-4.4/656-skb_reduce_truesize-helper.patch
@@ -14,7 +14,7 @@ when needed.
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2199,6 +2199,24 @@ static inline void pskb_trim_unique(stru
+@@ -2200,6 +2200,24 @@ static inline void pskb_trim_unique(stru
BUG_ON(err);
}
diff --git a/target/linux/generic/patches-4.4/664-codel_fix_3_12.patch b/target/linux/generic/patches-4.4/664-codel_fix_3_12.patch
index 2682441..4d4ca25 100644
--- a/target/linux/generic/patches-4.4/664-codel_fix_3_12.patch
+++ b/target/linux/generic/patches-4.4/664-codel_fix_3_12.patch
@@ -1,6 +1,6 @@
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
-@@ -1945,7 +1945,7 @@ static int __init pktsched_init(void)
+@@ -1946,7 +1946,7 @@ static int __init pktsched_init(void)
return err;
}
diff --git a/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 9409359..be5cf50 100644
--- a/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -143,7 +143,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = {
.__refcnt = ATOMIC_INIT(1),
-@@ -1884,6 +1901,11 @@ static struct rt6_info *ip6_route_info_c
+@@ -1883,6 +1900,11 @@ static struct rt6_info *ip6_route_info_c
rt->dst.output = ip6_pkt_prohibit_out;
rt->dst.input = ip6_pkt_prohibit;
break;
@@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
case RTN_THROW:
case RTN_UNREACHABLE:
default:
-@@ -2485,6 +2507,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -2484,6 +2506,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
@@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -2727,7 +2760,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -2726,7 +2759,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
@@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -3086,6 +3120,9 @@ static int rt6_fill_node(struct net *net
+@@ -3085,6 +3119,9 @@ static int rt6_fill_node(struct net *net
case -EACCES:
rtm->rtm_type = RTN_PROHIBIT;
break;
@@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
case -EAGAIN:
rtm->rtm_type = RTN_THROW;
break;
-@@ -3359,6 +3396,8 @@ static int ip6_route_dev_notify(struct n
+@@ -3358,6 +3395,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -3575,6 +3614,17 @@ static int __net_init ip6_route_net_init
+@@ -3574,6 +3613,17 @@ static int __net_init ip6_route_net_init
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
@@ -220,7 +220,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
#endif
net->ipv6.sysctl.flush_delay = 0;
-@@ -3593,6 +3643,8 @@ out:
+@@ -3592,6 +3642,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -3610,6 +3662,7 @@ static void __net_exit ip6_route_net_exi
+@@ -3609,6 +3661,7 @@ static void __net_exit ip6_route_net_exi
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
@@ -237,7 +237,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
}
-@@ -3707,6 +3760,9 @@ int __init ip6_route_init(void)
+@@ -3706,6 +3759,9 @@ int __init ip6_route_init(void)
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
diff --git a/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index 256bd51..a9ea04a 100644
--- a/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4204,6 +4204,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4205,6 +4205,9 @@ static enum gro_result dev_gro_receive(s
enum gro_result ret;
int grow;
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (!(skb->dev->features & NETIF_F_GRO))
goto normal;
-@@ -5354,6 +5357,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5357,6 +5360,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower);
}
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master,
void *private)
-@@ -5425,6 +5470,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5428,6 +5473,7 @@ static int __netdev_upper_dev_link(struc
goto rollback_lower_mesh;
}
@@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
return 0;
-@@ -5551,6 +5597,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -5554,6 +5600,7 @@ void netdev_upper_dev_unlink(struct net_
list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
__netdev_adjacent_dev_unlink(dev, i->dev);
@@ -92,7 +92,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
}
-@@ -6091,6 +6138,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6094,6 +6141,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
@@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
#endif
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -641,7 +641,8 @@ struct sk_buff {
+@@ -642,7 +642,8 @@ struct sk_buff {
__u8 ipvs_property:1;
__u8 inner_protocol_type:1;
__u8 remcsum_offload:1;
diff --git a/target/linux/generic/patches-4.4/721-phy_packets.patch b/target/linux/generic/patches-4.4/721-phy_packets.patch
index c599356..04bafcd 100644
--- a/target/linux/generic/patches-4.4/721-phy_packets.patch
+++ b/target/linux/generic/patches-4.4/721-phy_packets.patch
@@ -41,7 +41,7 @@
*/
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2185,6 +2185,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -2186,6 +2186,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
}
@@ -52,7 +52,7 @@
/**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter
-@@ -2307,16 +2311,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2308,16 +2312,6 @@ static inline struct sk_buff *dev_alloc_
}
@@ -121,7 +121,7 @@
#include <net/protocol.h>
#include <net/dst.h>
-@@ -518,6 +519,22 @@ skb_fail:
+@@ -520,6 +521,22 @@ skb_fail:
}
EXPORT_SYMBOL(__napi_alloc_skb);
diff --git a/target/linux/generic/patches-4.4/902-debloat_proc.patch b/target/linux/generic/patches-4.4/902-debloat_proc.patch
index 0740e96..04a7b63 100644
--- a/target/linux/generic/patches-4.4/902-debloat_proc.patch
+++ b/target/linux/generic/patches-4.4/902-debloat_proc.patch
@@ -1,6 +1,6 @@
--- a/fs/locks.c
+++ b/fs/locks.c
-@@ -2703,6 +2703,8 @@ static const struct file_operations proc
+@@ -2712,6 +2712,8 @@ static const struct file_operations proc
static int __init proc_locks_init(void)
{
@@ -239,7 +239,7 @@
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -419,6 +419,9 @@ static struct pernet_operations ip_rt_pr
+@@ -420,6 +420,9 @@ static struct pernet_operations ip_rt_pr
static int __init ip_rt_proc_init(void)
{
diff --git a/target/linux/mxs/patches-4.4/102-mxs-add-regulator-driver.patch b/target/linux/mxs/patches-4.4/102-mxs-add-regulator-driver.patch
index cb658c9..b13fbda 100644
--- a/target/linux/mxs/patches-4.4/102-mxs-add-regulator-driver.patch
+++ b/target/linux/mxs/patches-4.4/102-mxs-add-regulator-driver.patch
@@ -1,6 +1,6 @@
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
-@@ -461,6 +461,14 @@ config REGULATOR_MT6397
+@@ -462,6 +462,14 @@ config REGULATOR_MT6397
This driver supports the control of different power rails of device
through regulator interface.
diff --git a/target/linux/uml/patches-4.4/100-link-libpthread.patch b/target/linux/uml/patches-4.4/100-link-libpthread.patch
deleted file mode 100644
index 2ffab6b..0000000
--- a/target/linux/uml/patches-4.4/100-link-libpthread.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/scripts/link-vmlinux.sh
-+++ b/scripts/link-vmlinux.sh
-@@ -62,7 +62,7 @@ vmlinux_link()
- -Wl,--start-group \
- ${KBUILD_VMLINUX_MAIN} \
- -Wl,--end-group \
-- -lutil -lrt ${1}
-+ -lutil -lrt -lpthread ${1}
- rm -f linux
- fi
- }