firewire fixes for 6.11-rc1
Two commits are included to fix some regressions. These commits should also be applied to the v6.10 kernel as well. The recent integration of compiler collections introduced the technology to check flexible array length at runtime by providing proper annotations. In v6.10 kernel, a patch was merged into firewire subsystem to utilize it, however the annotation was inadequate. There is also the related change for the flexible array in sound subsystem, but it causes a regression where the data in the payload of isochronous packet is incorrect for some devices. These bugs are now fixed. -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQQE66IEYNDXNBPeGKSsLtaWM8LwEwUCZqRPbgAKCRCsLtaWM8Lw E4IDAQCr4s3/W1fwkUcxvaFKn4ngELXtZ8D2BtI0I3x+axOvggEA4NhtbSwusyKK r3Zsyf8r9WrzIOMFASqqV7LlaiWTogI= =eq44 -----END PGP SIGNATURE----- Merge tag 'firewire-fixes-6.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394 Pull firewire fixes from Takashi Sakamoto: "The recent integration of compiler collections introduced the technology to check flexible array length at runtime by providing proper annotations. In v6.10 kernel, a patch was merged into firewire subsystem to utilize it, however the annotation was inadequate. There is also the related change for the flexible array in sound subsystem, but it causes a regression where the data in the payload of isochronous packet is incorrect for some devices. These bugs are now fixed" * tag 'firewire-fixes-6.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394: ALSA: firewire-lib: fix wrong value as length of header for CIP_NO_HEADER case Revert "firewire: Annotate struct fw_iso_packet with __counted_by()"
This commit is contained in:
commit
0421621158
@ -462,9 +462,8 @@ struct fw_iso_packet {
|
||||
/* rx: Sync bit, wait for matching sy */
|
||||
u32 tag:2; /* tx: Tag in packet header */
|
||||
u32 sy:4; /* tx: Sy in packet header */
|
||||
u32 header_length:8; /* Length of immediate header */
|
||||
/* tx: Top of 1394 isoch. data_block */
|
||||
u32 header[] __counted_by(header_length);
|
||||
u32 header_length:8; /* Size of immediate header */
|
||||
u32 header[]; /* tx: Top of 1394 isoch. data_block */
|
||||
};
|
||||
|
||||
#define FW_ISO_CONTEXT_TRANSMIT 0
|
||||
|
@ -1180,8 +1180,7 @@ static void process_rx_packets(struct fw_iso_context *context, u32 tstamp, size_
|
||||
(void)fw_card_read_cycle_time(fw_parent_device(s->unit)->card, &curr_cycle_time);
|
||||
|
||||
for (i = 0; i < packets; ++i) {
|
||||
DEFINE_FLEX(struct fw_iso_packet, template, header,
|
||||
header_length, CIP_HEADER_QUADLETS);
|
||||
DEFINE_RAW_FLEX(struct fw_iso_packet, template, header, CIP_HEADER_QUADLETS);
|
||||
bool sched_irq = false;
|
||||
|
||||
build_it_pkt_header(s, desc->cycle, template, pkt_header_length,
|
||||
|
Loading…
Reference in New Issue
Block a user