Commit graph

535 commits

Author SHA1 Message Date
Thomas Faber
477cf902e4
[USBHUB_NEW] Fix inverted check in USBH_RestoreDevice.
This allows re-enabling a disabled device.
2019-04-14 15:32:16 +02:00
Thomas Faber
46b0f6d9de
[USBCCGP] Allow unconfiguring the device in USBCCGP_PDOSelectConfiguration.
Fixes device removal for USB audio devices.
2019-04-14 15:32:14 +02:00
Thomas Faber
528fc589c0
[USBCCGP] Do not try to unconfigure a device that is not configured.
Fixes handling failed IRP_MN_START_DEVICE.
2019-04-14 15:32:12 +02:00
Victor Perevertkin
5f4cf8a716 [USBHID] Do not assert if the device was unplugged during an operation. 2019-04-08 12:05:17 +03:00
Hervé Poussineau
902b86eecf [UDFS] Fix macros to support 'bit' being a complex expression
This is for example used in udf_info/mount.cpp:
    UDFSetUsedBits(new_bm, i & ~(d-1), d);
2019-04-07 19:28:18 +02:00
Hervé Poussineau
5f69f99ce2 [UDFS] Keep same includes/defines on x64 as on other architectures 2019-04-07 19:28:18 +02:00
Hervé Poussineau
33cf2c44c5 [MUP] Use _SEH2_AbnormalTermination() instead of _abnormal_termination()
We're already using SEH2 macros, so also use SEH2 functions
2019-04-07 19:28:18 +02:00
Hervé Poussineau
4c1cbd2b53 [EXT2] Add __REACTOS__ check around changes done in 76910c358f 2019-04-07 18:32:29 +02:00
Thomas Faber
89a587169b
[ACPICA] Update to version 20190405. CORE-15926 2019-04-07 10:59:52 +02:00
Jérôme Gardou
23373acbb9 [CMAKE] Use modules instead of shared libraries
There is no need to compile our DLLs as shared libraries since we are
managing symbols exports and imports through spec files.

On my system, this reduces the configure-time by a factor of two.
2019-04-06 17:43:38 +02:00
Pierre Schweitzer
2a104321ee [UDFS] Fix an integer overflow leading to a buffer overrun
Spotted by GCC7
2019-04-04 15:08:21 +02:00
Alexandr A. Telyatnikov
6d5a81013c [UNIATA] Fix for uninitialized Lun pointer
This fixes crash on Intel AHCI init. CORE-15886
2019-04-02 18:02:07 +02:00
Timo Kreuzer
c334c17d69 [UDFS] Fix 64 bit issues 2019-04-02 10:53:23 +02:00
Hervé Poussineau
12c70fb4cf [UDFS] Really use 'logical or' when meant to
'binary or' was also working, but it is less clear.
2019-04-01 11:38:32 +02:00
Hervé Poussineau
76910c358f [EXT2] Correctly zero memory before using it 2019-04-01 11:38:32 +02:00
Thomas Faber
ba1fb9ace9
[ACPICA] Update to version 20190329. CORE-15900 2019-03-30 14:57:35 +01:00
Maxim Smirnov
5570cde271
[NULL] Use correct device characteristics value for the null device 2019-03-28 22:46:04 +01:00
Thomas Faber
b546130731
[UNIATA] Update to version 0.47. CORE-15870 2019-03-24 14:48:32 +01:00
Thomas Faber
526fc76cac
[SERIAL] Do not return NTSTATUS from an interrupt routine. 2019-03-24 09:25:17 +01:00
Thomas Faber
b91cf860cd
[UNIATA] Update to version 46e8. CORE-15843 2019-03-14 13:16:43 +01:00
Thomas Faber
48870fe35e
[UNIATA] Remove an unnecessary ROS-diff. 2019-03-14 13:16:41 +01:00
Thomas Faber
fc9d5d2f55
[USBUHCI_NEW] Fix an infinite loop. 2019-03-11 08:54:03 +01:00
Thomas Faber
026a12fe39
[USBPORT] Implement interface setting in USBPORT_OpenInterface. 2019-03-11 08:54:01 +01:00
Thomas Faber
ac20ab031c
[USBPORT] Correctly handle alternate settings returned from USBPORT_ParseConfigurationDescriptor.
The last parameter of USBPORT_ParseConfigurationDescriptor is a pointer
to a boolean indicating whether any alternate interface settings were
found for the specified interface.
Interpreting it as an alternate setting value, as we did before,
would always override the alternate setting to '1' (if any alternate
descriptors were present), therefore selecting the wrong interface
setting, and possibly causing a buffer overflow on the InterfaceList's
Pipes array.

Found by Special Pool.
2019-03-11 08:53:55 +01:00
Thomas Faber
36c1cb0910
[USBPORT] Correctly find interface descriptor in USBPORT_ParseConfigurationDescriptor
There can be other descriptors between the config descriptor and the
first interface descriptor, so we specifically need to check for
the interface descriptor type and skip anything before that.
We also need to guard against bLength == 0, which would cause an
infinite loop, instead of doing a second bDescriptorType check.
2019-03-11 08:53:53 +01:00
Thomas Faber
1946f6bb25
[USBPORT] Acquire EndpointSpinLock in addition to MiniportSpinLock in USBPORT_ReopenPipe. 2019-03-11 08:53:52 +01:00
Thomas Faber
e47240fb37
[USBPORT] Release StateChangeSpinLock before acquiring MiniportSpinLock.
Found by Driver Verifier.
2019-03-11 08:53:50 +01:00
Thomas Faber
267f5633ee
[USBPORT] Leave IRP status untouched for unhandled interfaces.
Found by Driver Verifier.
2019-03-11 08:53:49 +01:00
Thomas Faber
12a66769fc
[USBPORT] Don't change the status of IRP_MJ_SYSTEM_CONTROL requests.
Found by Driver Verifier.
2019-03-11 08:53:47 +01:00
Thomas Faber
e10e6a85fb
[USBHUB_NEW] Don't leak IRP_MJ_SYSTEM_CONTROL requests.
Found by Driver Verifier.
2019-03-11 08:53:45 +01:00
Pierre Schweitzer
4e07b3b9f9
[AFD] Don't reallocate buffers if windows sizes didn't change 2019-03-10 12:27:30 +01:00
Timo Kreuzer
f5f6ea2965 [REACTOS] Fix 64 bit issues 2019-03-04 21:58:42 +01:00
Timo Kreuzer
403fec1b27 [SACDRV] Fix CHECK_PARAMETER_WITH_STATUS error handling macro 2019-03-04 21:58:42 +01:00
Timo Kreuzer
05f4951b8c [CDROM_NEW] Fix SLIST_ENTRY vs SINGLE_LIST_ENTRY issues 2019-03-04 21:58:42 +01:00
Timo Kreuzer
dfd876a96b [CLASSPNP] Fix SLIST_ENTRY vs SINGLE_LIST_ENTRY issues 2019-03-04 21:58:42 +01:00
Thomas Faber
1001e6089f
[HDAUDBUS] Wait until the correct number of responses was received. CORE-15465
We previously only gave the device a hard-coded amount of time to respond,
which could lead to interpreting the contents of uninitialized memory as
a response. This would lead to an unreasonably large number of audio function
groups being detected.

A KSEMAPHORE mirrors what Haiku uses here, though it may not be the optimal
synchronization primitive for this case under Windows.
2019-02-28 10:27:06 +01:00
Thomas Faber
8530ae9950
[HDAUDBUS] Handle responses in a DPC instead of the ISR. 2019-02-28 10:06:18 +01:00
Thomas Faber
a7431880bd
[HDAUDBUS] Fix a DPRINT. 2019-02-28 10:05:53 +01:00
Thomas Faber
1f76fb738a
[HDAUDBUS] Prevent overflow of the AudioGroups array. CORE-14153 CORE-15465
This protects against crashing in case of faulty/malicious hardware,
but also works around a bug in HDA_SendVerbs that causes it to return
invalid data, thereby suggesting more groups than are actually present.
2019-02-27 11:04:23 +01:00
Thomas Faber
a8414f665b
[HDAUDBUS] Implement HDA_Unload. Stub HDA_Power and HDA_SystemControl. 2019-02-26 09:58:53 +01:00
Thomas Faber
25b22131ca
[HDAUDBUS] Correctly mask register values.
See https://github.com/haiku/haiku/blob/master/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp
and https://github.com/haiku/haiku/blob/master/src/add-ons/kernel/drivers/audio/hda/driver.h#L118-L140

This fixes various device reset failures and probably other issues.
2019-02-26 09:51:48 +01:00
Thomas Faber
584baf79d9
[HDAUDBUS] Implement PDO removal. CORE-14617 2019-02-26 09:51:38 +01:00
Thomas Faber
c8c0fc8d64
[HDAUDBUS] Implement FDO removal. CORE-14617 2019-02-26 09:51:21 +01:00
Thomas Faber
b05e5b0340
[HDAUDBUS] Use IoForwardIrpSynchronously instead of HDA_SyncForwardIrp. 2019-02-26 09:50:50 +01:00
Thomas Faber
789cfd3ddc
[HDAUDBUS] Forward FDO requests instead of completing them. 2019-02-26 09:20:47 +01:00
Thomas Faber
ce6960b3f5
[HDAUDBUS] Use a switch for minor function codes. 2019-02-26 09:20:43 +01:00
Thomas Faber
9c7c2deff9
[HDAUDBUS] Split FDO/PDO PNP handling into separate functions. 2019-02-26 09:20:37 +01:00
Thomas Faber
b65ec6ffba
[HDAUDBUS] Minor fixes:
* Add some forward-declarations
* Add some annotations
* Improve a DPRINT
2019-02-26 09:18:41 +01:00
Pierre Schweitzer
86483d6e22
[AFD] Don't allow caller to set broken values to window sizes
This will avoid 0-sized allocations, or -1-sized allocations.
So far, it's maxed by hard value stored in TCPIP.sys. I believe
this is not right and would deserve a true fix
2019-02-25 22:34:28 +01:00
Pierre Schweitzer
bb9eec7537
[AFD] Add default window sizes on socket creation 2019-02-25 22:34:28 +01:00