UPSTREAM: xfrm/compat: Attach xfrm dumps to 64=>32 bit translator
authorDmitry Safonov <dima@arista.com>
Mon, 21 Sep 2020 14:36:53 +0000 (15:36 +0100)
committerAlistair Delva <adelva@google.com>
Mon, 2 Nov 2020 16:17:55 +0000 (16:17 +0000)
commit3917bfabba1fbac72bc2e3c9d36351d4c4981ba8
tree090a93fa28feb6d108fd05154def0c4d682aad8e
parente7e611d20a41f94baecdaec9cab8c58b604ebf4d
UPSTREAM: xfrm/compat: Attach xfrm dumps to 64=>32 bit translator

Currently nlmsg_unicast() is used by functions that dump structures that
can be different in size for compat tasks, see dump_one_state() and
dump_one_policy().

The following nlmsg_unicast() users exist today in xfrm:

         Function                          |    Message can be different
                                           |       in size on compat
-------------------------------------------|------------------------------
    xfrm_get_spdinfo()                     |               N
    xfrm_get_sadinfo()                     |               N
    xfrm_get_sa()                          |               Y
    xfrm_alloc_userspi()                   |               Y
    xfrm_get_policy()                      |               Y
    xfrm_get_ae()                          |               N

Besides, dump_one_state() and dump_one_policy() can be used by filtered
netlink dump for XFRM_MSG_GETSA, XFRM_MSG_GETPOLICY.

Just as for xfrm multicast, allocate frag_list for compat skb journey
down to recvmsg() which will give user the desired skb according to
syscall bitness.

Signed-off-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
(cherry picked from commit 5f3eea6b7e8f58cf5c8a9d4b9679dc19e9e67ba3)
Bug: 163141236
Signed-off-by: Alistair Delva <adelva@google.com>
Change-Id: Id1a606ddd9d7dfe73a448eeb252b1bfd8dbd2fcb
net/xfrm/xfrm_user.c