tree:
https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git Wextra
head: 5d0c476a9aa8d83304ee40320c1533a7443c6af5
commit: 828241168b4b6b303cbba8bf9e1b693a3fd6ed61 [5/32] firewire: fix function type cast
warning
config: x86_64-randconfig-s021-20201019 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-rc1-2-g368fd9ce-dirty
#
https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git/commi...
git remote add arnd-playground
https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git
git fetch --no-tags arnd-playground Wextra
git checkout 828241168b4b6b303cbba8bf9e1b693a3fd6ed61
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
"sparse warnings: (new ones prefixed by >>)"
sound/firewire/amdtp-stream.c: note: in included file:
include/linux/firewire.h:434:52: sparse: sparse: attribute __transparent_union__
applied to non-union type
> sound/firewire/amdtp-stream.c:1097:43: sparse: sparse: incorrect
type in argument 6 (invalid types) @@ expected union fw_iso_callback_t [usertype]
callback @@ got void ( * )( ... ) @@
> sound/firewire/amdtp-stream.c:1097:43: sparse: expected union fw_iso_callback_t
[usertype] callback
> sound/firewire/amdtp-stream.c:1097:43: sparse: got void ( * )( ... )
--
sound/firewire/isight.c: note: in included file:
include/linux/firewire.h:434:52: sparse: sparse: attribute __transparent_union__
applied to non-union type
> sound/firewire/isight.c:365:52: sparse: sparse: incorrect type in
argument 6 (invalid types) @@ expected union fw_iso_callback_t [usertype] callback @@
got void ( * )( ... ) @@
> sound/firewire/isight.c:365:52: sparse: expected union fw_iso_callback_t
[usertype] callback
> sound/firewire/isight.c:365:52: sparse: got void ( * )( ... )
vim +1097 sound/firewire/amdtp-stream.c
7b3b0d8583c926 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1023
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1024 /**
be4a28940a9973 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1025 *
amdtp_stream_start - start transferring packets
be4a28940a9973 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1026 * @s: the
AMDTP stream to start
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1027 *
@channel: the isochronous channel on the bus
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1028 * @speed:
firewire speed code
acfedcbe1ce4c6 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1029 *
@start_cycle: the isochronous cycle to start the context. Start immediately
acfedcbe1ce4c6 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1030 * if
negative value is given.
af86b0b1f4b045 sound/firewire/amdtp-stream.c Takashi Sakamoto 2020-05-08 1031 *
@queue_size: The number of packets in the queue.
af86b0b1f4b045 sound/firewire/amdtp-stream.c Takashi Sakamoto 2020-05-08 1032 *
@idle_irq_interval: the interval to queue packet during initial state.
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1033 *
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1034 * The
stream cannot be started until it has been configured with
be4a28940a9973 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1035 *
amdtp_stream_set_parameters() and it must be started before any PCM or MIDI
be4a28940a9973 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1036 * device
can be started.
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1037 */
a0e023317e2d55 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1038 static int
amdtp_stream_start(struct amdtp_stream *s, int channel, int speed,
af86b0b1f4b045 sound/firewire/amdtp-stream.c Takashi Sakamoto 2020-05-08 1039
int start_cycle, unsigned int queue_size,
af86b0b1f4b045 sound/firewire/amdtp-stream.c Takashi Sakamoto 2020-05-08 1040
unsigned int idle_irq_interval)
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1041 {
2472cfb3232caf sound/firewire/amdtp-stream.c Takashi Sakamoto 2020-05-08 1042 bool
is_irq_target = (s == s->domain->irq_target);
d3d10a4a1b1950 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-21 1043 unsigned
int ctx_header_size;
f11453c7cc010d sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-22 1044 unsigned
int max_ctx_payload_size;
2b3fc456febf54 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1045 enum
dma_data_direction dir;
7ab566453fe32d sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1046 int type,
tag, err;
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1047
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1048
mutex_lock(&s->mutex);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1049
be4a28940a9973 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1050 if
(WARN_ON(amdtp_stream_running(s) ||
4b7da117e5e1cd sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1051
(s->data_block_quadlets < 1))) {
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1052 err =
-EBADFD;
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1053 goto
err_unlock;
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1054 }
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1055
d3d10a4a1b1950 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-21 1056 if
(s->direction == AMDTP_IN_STREAM) {
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1057 // NOTE:
IT context should be used for constant IRQ.
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1058 if
(is_irq_target) {
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1059 err =
-EINVAL;
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1060 goto
err_unlock;
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1061 }
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1062
b6bc812327aa69 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1063
s->data_block_counter = UINT_MAX;
d3d10a4a1b1950 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-21 1064 } else {
4b7da117e5e1cd sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1065
s->data_block_counter = 0;
d3d10a4a1b1950 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-21 1066 }
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1067
2b3fc456febf54 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1068 /*
initialize packet buffer */
2b3fc456febf54 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1069 if
(s->direction == AMDTP_IN_STREAM) {
2b3fc456febf54 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1070 dir =
DMA_FROM_DEVICE;
2b3fc456febf54 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1071 type =
FW_ISO_CONTEXT_RECEIVE;
f11453c7cc010d sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-22 1072 if
(!(s->flags & CIP_NO_HEADER))
f11453c7cc010d sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-22 1073
ctx_header_size = IR_CTX_HEADER_SIZE_CIP;
f11453c7cc010d sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-22 1074 else
f11453c7cc010d sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-22 1075
ctx_header_size = IR_CTX_HEADER_SIZE_NO_CIP;
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1076
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1077
max_ctx_payload_size = amdtp_stream_get_max_payload(s) -
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1078
ctx_header_size;
2b3fc456febf54 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1079 } else {
2b3fc456febf54 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1080 dir =
DMA_TO_DEVICE;
2b3fc456febf54 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1081 type =
FW_ISO_CONTEXT_TRANSMIT;
df9160b9149912 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-21 1082
ctx_header_size = 0; // No effect for IT context.
f11453c7cc010d sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-22 1083
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1084
max_ctx_payload_size = amdtp_stream_get_max_payload(s);
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1085 if
(!(s->flags & CIP_NO_HEADER))
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1086
max_ctx_payload_size -= IT_PKT_HEADER_SIZE_CIP;
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1087 }
f11453c7cc010d sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-22 1088
af86b0b1f4b045 sound/firewire/amdtp-stream.c Takashi Sakamoto 2020-05-08 1089 err =
iso_packets_buffer_init(&s->buffer, s->unit, queue_size,
f11453c7cc010d sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-22 1090
max_ctx_payload_size, dir);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1091 if (err
< 0)
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1092 goto
err_unlock;
af86b0b1f4b045 sound/firewire/amdtp-stream.c Takashi Sakamoto 2020-05-08 1093
s->queue_size = queue_size;
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1094
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1095
s->context = fw_iso_context_create(fw_parent_device(s->unit)->card,
d3d10a4a1b1950 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-21 1096
type, channel, speed, ctx_header_size,
2472cfb3232caf sound/firewire/amdtp-stream.c Takashi Sakamoto 2020-05-08 @1097
amdtp_stream_first_callback, s);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1098 if
(IS_ERR(s->context)) {
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1099 err =
PTR_ERR(s->context);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1100 if (err
== -EBUSY)
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1101
dev_err(&s->unit->device,
be4a28940a9973 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1102
"no free stream on this controller\n");
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1103 goto
err_buffer;
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1104 }
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1105
be4a28940a9973 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1106
amdtp_stream_update(s);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1107
d3d10a4a1b1950 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-21 1108 if
(s->direction == AMDTP_IN_STREAM) {
f11453c7cc010d sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-22 1109
s->ctx_data.tx.max_ctx_payload_length = max_ctx_payload_size;
d3d10a4a1b1950 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-21 1110
s->ctx_data.tx.ctx_header_size = ctx_header_size;
d3d10a4a1b1950 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-21 1111 }
52759c0963510a sound/firewire/amdtp-stream.c Takashi Sakamoto 2018-04-29 1112
3b196c394dd9f8 sound/firewire/amdtp-stream.c Takashi Sakamoto 2017-03-31 1113 if
(s->flags & CIP_NO_HEADER)
3b196c394dd9f8 sound/firewire/amdtp-stream.c Takashi Sakamoto 2017-03-31 1114
s->tag = TAG_NO_CIP_HEADER;
3b196c394dd9f8 sound/firewire/amdtp-stream.c Takashi Sakamoto 2017-03-31 1115 else
3b196c394dd9f8 sound/firewire/amdtp-stream.c Takashi Sakamoto 2017-03-31 1116
s->tag = TAG_CIP;
3b196c394dd9f8 sound/firewire/amdtp-stream.c Takashi Sakamoto 2017-03-31 1117
a0e023317e2d55 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1118
s->pkt_descs = kcalloc(s->queue_size, sizeof(*s->pkt_descs),
04130cf8e296bf sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-07-22 1119
GFP_KERNEL);
04130cf8e296bf sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-07-22 1120 if
(!s->pkt_descs) {
04130cf8e296bf sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-07-22 1121 err =
-ENOMEM;
04130cf8e296bf sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-07-22 1122 goto
err_context;
04130cf8e296bf sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-07-22 1123 }
04130cf8e296bf sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-07-22 1124
ec00f5e444706c sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1125
s->packet_index = 0;
4b7da117e5e1cd sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1126 do {
6007bf5460cc3b sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1127 struct
fw_iso_packet params;
e229853d505d7a sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1128
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1129 if
(s->direction == AMDTP_IN_STREAM) {
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1130 err =
queue_in_packet(s, ¶ms);
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1131 } else
{
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1132 bool
sched_irq = false;
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1133
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1134
params.header_length = 0;
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1135
params.payload_length = 0;
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1136
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1137 if
(is_irq_target) {
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1138
sched_irq = !((s->packet_index + 1) %
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1139
idle_irq_interval);
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1140 }
60dd49298ec580 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1141
e229853d505d7a sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1142 err =
queue_out_packet(s, ¶ms, sched_irq);
b18f0cfaf16bee sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-05-24 1143 }
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1144 if (err
< 0)
04130cf8e296bf sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-07-22 1145 goto
err_pkt_descs;
4b7da117e5e1cd sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1146 } while
(s->packet_index > 0);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1147
2b3fc456febf54 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1148 /* NOTE:
TAG1 matches CIP. This just affects in stream. */
7ab566453fe32d sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1149 tag =
FW_ISO_CONTEXT_MATCH_TAG1;
3b196c394dd9f8 sound/firewire/amdtp-stream.c Takashi Sakamoto 2017-03-31 1150 if
((s->flags & CIP_EMPTY_WITH_TAG0) || (s->flags & CIP_NO_HEADER))
7ab566453fe32d sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1151 tag |=
FW_ISO_CONTEXT_MATCH_TAG0;
7ab566453fe32d sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1152
7b3b0d8583c926 sound/firewire/amdtp.c Takashi Sakamoto 2014-04-25 1153
s->callbacked = false;
acfedcbe1ce4c6 sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-10-18 1154 err =
fw_iso_context_start(s->context, start_cycle, 0, tag);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1155 if (err
< 0)
04130cf8e296bf sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-07-22 1156 goto
err_pkt_descs;
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1157
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1158
mutex_unlock(&s->mutex);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1159
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1160 return
0;
04130cf8e296bf sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-07-22 1161
err_pkt_descs:
04130cf8e296bf sound/firewire/amdtp-stream.c Takashi Sakamoto 2019-07-22 1162
kfree(s->pkt_descs);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1163
err_context:
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1164
fw_iso_context_destroy(s->context);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1165
s->context = ERR_PTR(-1);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1166
err_buffer:
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1167
iso_packets_buffer_destroy(&s->buffer, s->unit);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1168
err_unlock:
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1169
mutex_unlock(&s->mutex);
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1170
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1171 return
err;
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1172 }
31ef9134eb5263 sound/firewire/amdtp.c Clemens Ladisch 2011-03-15 1173
:::::: The code at line 1097 was first introduced by commit
:::::: 2472cfb3232caf8f68e4d93ae830c569b0bbc25b ALSA: firewire-lib: add reference to
domain structure from stream structure
:::::: TO: Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
:::::: CC: Takashi Iwai <tiwai(a)suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org